【发布时间】:2010-03-25 22:51:35
【问题描述】:
#!/bin/bash
if test "$#" == "4"; then echo "$*"; else echo "args-error" >&2; fi;
当我尝试在 Ubuntu 和 Cygwin 上运行时,这个小代码 sn-p 给我带来了很多麻烦。
Ubuntu 运行 bash 版本 4.0+,而 Cygwin 运行 3.2.49;但我认为版本冲突不是造成这种情况的原因,这段代码在使用 bash 版本 3 的 fedora 10 下运行良好。+
所以基本上我想知道是否有办法一劳永逸地编写我的脚本,这样以后就不会出现这个可怕的问题了。
非常感谢。
已编辑:我目前手头没有 Cygwin,但根据我的记忆,它一直在说无法解析未定义的令牌“fi”之类的东西。
已编辑:嗯,原来的表格是这样的,刚从服务器上找到的:
#!/bin/bash
if ["$#" == "4"];
then echo "$*";
else echo "args-error" >&2;
fi;
控制台抱怨:
$ ./test.sh 1 2 3
./test.sh: line 2: [3: command not found
args-error
我也想知道为什么 stderr 说出了点问题-找不到命令-但仍然可以打印出答案?
【问题讨论】:
-
您遇到的错误是什么?这段代码 sn-p 对我来说似乎工作得很好(Ubuntu 9.10,bash 4.0.33)。
-
在我的 Cygwin 上看起来不错(也是 bash 3.2.49)。错误信息是什么?
-
@mobrule : 对不起,这是使用测试语句的固定版本,我已经更新了问题,现在有错误...