做的时候Cygwin错误...然后... fi - Bash脚本

4 linux bash shell cygwin if-statement

我刚开始使用bash shell编程.我在Windows 7计算机上安装了Cygwin.我开始使用本教程编写脚本.我的脚本需要传递一个参数,如果没有,它应该显示错误信息.这是直接来自教程的代码和我的代码中的相同代码:

[ $# -eq 0 ] && { echo "usage: someArgument";  exit 1; }
Run Code Online (Sandbox Code Playgroud)

当我执行以下操作时:

sh ./myscript.sh
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

-bash: /home/Me/myscript.sh: line 5: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

"意外的文件结尾"是指我错过了fidone等地方.

我仔细检查了我的代码,但一无所获.另外,当我注释掉这一行时,脚本的效果非常好.

我尝试使用if...then...fi:

if [ $# -eq 0 ]
then
    echo "usage: someArgument"
    exit 1;
fi
Run Code Online (Sandbox Code Playgroud)

但无济于事!

请帮忙,这一直困扰着我.

Igo*_*bin 5

可能你\r在脚本中有或其他一些不可见的符号.请添加set -x到脚本的开头以切换调试并再次运行脚本.


小智 5

抱歉,添麻烦了.我对伊戈尔提到的隐形符号进行了一些研究.你必须dos2unix在Cygwin中运行,它为我解决了它.Dos类型的文件\r\n代替\n和其他一些使Cygwin感到困惑的东西.

这个:

$ dos2unix ./myscript.sh
$ sh ./myscript.sh
Run Code Online (Sandbox Code Playgroud)

工作正常.