最近我遇到了以下代码...
if [ ! $?target -o $target = "" ]; then
echo "Target is not set"
fi
"$taget"
或"$target"
是否为空。$?variable
如何工作,但我没有找到任何相对搜索结果。
答案 0 :(得分:4)
在某些shell中,例如csh
,如果设置了$?xyz
,xyz
将评估为1,否则评估为0。
所有代码片段都在检查是否根本没有设置$target
或者是否将其设置为空字符串。在这两种情况下,它都假定它没有设置。
请注意,这与bash
不同,例如$?
是上次执行的命令的返回码。在该shell中,您只需获取返回代码,后跟变量名称,例如0target
。
答案 1 :(得分:2)
我认为你的剧本有点误引,
if [ ! "$?target" -o "$target" = "" ]; then
echo "Target is not set"
fi
当$ target未设置时,这确实会打印“Target not set”,但更可靠的方法是: -
if [ "x$foo" = "x" ]; then
echo "foo is not set"
fi
答案 2 :(得分:-1)
我把“#!sh”放在顶部,第1行并在Mac OS 10.5上运行。终端窗口,它说它的bash ......
原始剧本,[! “$?target”-o“$ target”=“”]' 得到 try.sh:第3行:[:参数太多
IanNorton建议的版本有效: 目标未设置
我在第1行使用#!bash获得相同的结果,第1行没有shell规范。
您的里程可能会有所不同......