Linux sh脚本中出错,if语句给出了意外的文件结尾
我不太熟悉Linux和shell脚本,无论如何,我尝试了一些我想添加到我的开始脚本中的命令,但遇到了一些问题 我试过用不同的方法来摆脱这个问题Linux sh脚本中出错,if语句给出了意外的文件结尾,linux,if-statement,syntax-error,Linux,If Statement,Syntax Error,我不太熟悉Linux和shell脚本,无论如何,我尝试了一些我想添加到我的开始脚本中的命令,但遇到了一些问题 我试过用不同的方法来摆脱这个问题 : unexpected end of file" 及 在这个 #!/bin/bash DEBUG="$1" if [ "$DEBUG" = "debug" ]; then echo "Lets start in debug mode" fi 我试着像这样从命令行运行它 # sh myscript.sh debug 也曾试图像这样改变if if
: unexpected end of file"
及
在这个
#!/bin/bash
DEBUG="$1"
if [ "$DEBUG" = "debug" ]; then
echo "Lets start in debug mode"
fi
我试着像这样从命令行运行它
# sh myscript.sh debug
也曾试图像这样改变if
if [ "$DEBUG" = "debug" ]
then
echo ......
但错误依然存在
我知道我可以像这样运行它,但它似乎不符合要求
./myscript.sh debug
非常感谢您的提示或提示!!:) 您需要使用
dos2unix
转换脚本。该脚本中没有任何可能导致报告错误的冲突
该错误可能是因为CRLF结尾从Windows计算机/文本编辑器复制并在Linux/Unix计算机下运行。通过运行以下命令,将行尾(EOL)序列\r\n
转换为仅\n
dos2unix script.sh
注意空格,例如,这对我来说很有用(使用双相等):
您可以删除else语句您使用的是哪个文本编辑器?能否显示cat-A script.sh的输出?更可能的情况是,您在Windows文本编辑器中使用了DOS样式的结尾,或者您是对的@Inian,我在widows中使用了Winscp,并将其最初移动到了我的虚拟框中。移动它之后,我在Linux中使用VI来编辑该文件。我的解决方案是使用您所说的“dos2unix”,这应该不是问题。使用
=
绝对可以。OP可能有导致这些错误的回车字符。它可以工作,也可以尝试作者的原始代码。这也可以使用=
是一个bash
扩展,=
是标准的。请参阅,但它是一个bash文件
dos2unix script.sh
#!/bin/bash
DEBUG="$1"
if [ "$DEBUG" == "debug" ]; then
echo "Lets start in debug mode"
else
echo "try again"
fi