由于某种原因,我的脚本因语法错误而失败。不幸的是,没有进一步解释语法错误是什么或在哪里:
~$ sudo bash bastard.bash
test1
bastard.bash: line 13: syntax error: unexpected end of file
我已经能够使用这个最小脚本重现该问题:
#!/bin/bash
# option vars
silentInstallation=true
# work in progress
apt_options=()
echo "test1"
if [ "$silentInstallation" = true ]
then
echo "choosing silent installation"
apt_options=(-qq)
fi
echo "updating packages"
剧本似乎很好,直到if [ "$silentInstallation" = true ]
我查看了其他问题,但找不到以下内容:
- 没有左括号
- 没有未关闭的 if 语句
- 没有缺少换行符
我很确定这个脚本以前能运行。
注:我使用Windows环境下的Visual Studio Code进行开发
答案1
当我将代码片段复制到我的 Ubuntu 机器上时,没有出现错误,这意味着错误不是由 Bash 语法错误引起的。相反,尝试运行file test.sh
并检查输出。如果输出显示“...带有 CRLF 行终止符”,则表示该文件是 DOS 格式 ( \r\n
) 而不是 UNIX 格式 ( \n
)。
为了解决这个问题,请运行:
dos2unix test.sh