我有以下bash脚本
#!/bin/bash
for i in 4 5 6; do
echo $i
done
当我运行脚本时,它运行正常:
$ ./testbash
4
5
6
当我获取相同的脚本时,我得到以下语法错误
$ source testbash
bash: /home/nick/bin/testbash: line 5: syntax error: unexpected end of file
在获取bash文件时是否禁止某些命令?我使用的是GNU bash,版本4.1.2
这是脚本的
的hexdump$ hexdump -C testbash
00000000 23 21 2f 62 69 6e 2f 62 61 73 68 0a 66 6f 72 20 |#!/bin/bash.for |
00000010 69 20 69 6e 20 34 20 35 20 36 3b 20 64 6f 0a 20 |i in 4 5 6; do. |
00000020 20 65 63 68 6f 20 24 69 0a 64 6f 6e 65 0a | echo $i.done.|
0000002e
答案 0 :(得分:1)
有许多原因可以解释为什么采购和执行会产生不同的结果,但是为什么会出现新的bash语法错误的原因要少得多。
运行env -i bash --norc
以获得一个干净的shell,以便检查它是否与您当前的shell相关。
如果源代码在这个干净的shell中工作正常,请将以下命令的输出与它失败的shell进行比较:
alias
(如果您更换或引入done
等关键字)shopt
(如果您修改extglob
)echo $BASH_VERSION
(如果您的交互式rc文件最终执行不同的shell)