我试图理解为什么该脚本适用于#!/bin/bash
但不适用#!/bin/sh
。我正在运行Cygwin,sh.exe
和bash.exe
似乎相同(文件大小相同)。
$ cat 1.sh
#!/bin/sh
while read line; do
echo ${line:0:9}
done < <(help | head -5)
$ ./1.sh
./1.sh: line 4: syntax error near unexpected token `<'
./1.sh: line 4: `done < <(help | head -5)'
$ cat 2.sh
#!/bin/bash
while read line; do
echo ${line:0:9}
done < <(help | head -5)
$ ./2.sh
GNU bash,
These she
Type `hel
Use `info
Use `man
答案 0 :(得分:5)
尽管是同一个文件,shell在运行时会分析自己的名称,并切换到普通shell或bash模式。
答案 1 :(得分:2)