KSH条件错误

时间:2016-10-10 18:03:32

标签: shell unix ksh

我花了24小时试图找出在KSH中使用参数执行If语句的人。

我的脚本是:

VAR=failed
if [[$1 -gt $2]];then
    $VAR=Success
fi

echo $VAR

我得到的输出是

$FooBar.ksh 3 1
 FooBar.ksh[2]: [[3:  not found
failed

1 个答案:

答案 0 :(得分:3)

始终在 test 周围放置空格,所以:

VAR=failed
if [[ $1 -gt $2 ]]; then
    VAR='Success'
fi

echo "$VAR"

为变量赋值时没有$ sigil

一点测试

% ksh script.ksh 1 2
failed

% ksh script.ksh 2 1                                                                                        
Success

始终引用您的变量

"双引号"每个包含空格/元字符和每个扩展的文字:"$var""$(command "$var")""${array[@]}""a & b"。使用'single quotes'代码或文字$'s: 'Costs $5 US'ssh host 'echo "$HOSTNAME"'。见
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words

最后一件事

对于简单的脚本变量,请避免使用大写,将这些变量用于系统变量