#!/bin/bash
if test "$#" == "4"; then echo "$*"; else echo "args-error" >&2; fi;
Run Code Online (Sandbox Code Playgroud)
当我尝试在Ubuntu和Cygwin上运行它时,这个小代码片段让我很烦恼.
Ubuntu运行bash版本4.0+而Cygwin运行3.2.49; 但我认为版本冲突不应该是这个的原因,这个代码在fedora 10下运行良好,Fedora 10也使用bash版本3 +
所以基本上我想知道是否有一种方法来编写我的脚本一劳永逸,所以以后不会有这个可怕的问题.
提前谢谢了.
编辑:我现在没有手工制作Cygwin,但是从我的记忆中,它一直在说像无法解决未定义的令牌"fi"之类的东西.
编辑:嗯,原始表单是这样的,只是从服务器找到:
#!/bin/bash
if ["$#" == "4"];
then echo "$*";
else echo "args-error" >&2;
fi;
Run Code Online (Sandbox Code Playgroud)
控制台抱怨:
$ ./test.sh 1 2 3
./test.sh: line 2: [3: command not found
args-error
Run Code Online (Sandbox Code Playgroud)
我也想知道stderr怎么会出现问题 - 命令未找到 - 但仍然可以打印出答案?
你需要[和周围的空白].
#!/bin/bash
if [ "$#" == "4" ];
then echo "$*";
else echo "args-error" >&2;
fi;
Run Code Online (Sandbox Code Playgroud)