Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux sh脚本中出错,if语句给出了意外的文件结尾_Linux_If Statement_Syntax Error - Fatal编程技术网

Linux sh脚本中出错,if语句给出了意外的文件结尾

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

我不太熟悉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 [ "$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