【发布时间】:2012-07-15 06:38:35
【问题描述】:
我刚开始 bash shell 编程。我已经在我的 Windows 7 计算机上安装了 Cygwin。我开始使用this tutorial 编写脚本。我的脚本需要一个参数传递给它,如果不是,它应该显示一条错误消息。这是直接来自教程的代码,与我的代码中的代码相同:
[ $# -eq 0 ] && { echo "usage: someArgument"; exit 1; }
当我执行以下操作时:
sh ./myscript.sh
它给了我这个错误:
-bash: /home/Me/myscript.sh: line 5: syntax error: unexpected end of file
“文件意外结束”表示我在某处错过了fi 或done 等。
我仔细检查了我的代码,但发现什么都没有。另外,当我注释掉该行时,脚本运行良好。
我尝试使用if...then...fi:
if [ $# -eq 0 ]
then
echo "usage: someArgument"
exit 1;
fi
但无济于事!
请帮忙,它一直困扰着我。
【问题讨论】:
-
考虑提供一个准确的脚本来重现您的问题。目前尚不清楚您的“5”行在哪里。
-
@torrentialcoding 我正在使用记事本++。当我在脚本上运行 dos2unix 时,我刚刚注意到右下角的单词从 Dos/Windows 变为 UNIX(请参阅我的答案)。
-
@Java 我相信 Notepad++ 允许您以 Unix 模式保存文件。这将为您节省一个额外的步骤,即必须运行 dos2unix 工具以使您的脚本可用。
-
@torrentialcoding 是的。您可以转到编辑>EOL 转换>UNIX 格式,或在 Preferences 下设置为默认值。这是个好消息:)
标签: linux bash shell if-statement cygwin