语法错误:文件意外结束(如果 $x = true 则出现问题)

语法错误:文件意外结束(如果 $x = true 则出现问题)

由于某种原因,我的脚本因语法错误而失败。不幸的是,没有进一步解释语法错误是什么或在哪里:

~$ 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

相关内容