题
我正在使用下面的Shell脚本进行测试:
#!/bin/ksh -x
instance=`echo $1 | cut -d= -f2`
if [ $instance == "ALL" ]
then
echo "strings matched \n"
fi
在IF条件下给出此错误:
: ==: unknown test operator
是 ==
真的不是要使用的正确语法吗?我在命令行上运行如下
test_lsn_2 INSTANCE=ALL
任何人都可以建议解决方案。谢谢。
解决方案
我看到您正在使用KSH,但是您添加了Bash作为标签,您是否接受与BASH相关的答案?使用bash,您可以通过这些方式进行操作:
if [[ "$instance" == "ALL" ]]
if [ "$instance" = "ALL" ]
if [[ "$instance" -eq "ALL" ]]
看 这里 有关此的更多信息。
其他提示
要比较字符串,您需要单个=,而不是双重。如果字符串为空,则应将其放在双引号中:
if [ "$instance" = "ALL" ]
then
echo "strings matched \n"
fi
尝试
if [ "$instance" = "ALL" ]; then
有几个错误:
您需要围绕变量的双引号,以防止(不太可能)它是空的情况。在这种情况下,外壳会看到
if [ = "ALL" ]; then
这是无效的。在外壳中平等使用一个
=
(没有办法分配一个值if
在外壳中)。
totest=$1
case "$totest" in
"ALL" ) echo "ok" ;;
* ) echo "not ok" ;;
esac
我已经回答了一个类似的问题。基本上您需要的操作员是 =
(不是 ==
),如果您的变量为空,则语法会断开(即它变为 if [ = ALL]
)。看一下 另一个答案 有关详细信息。
不隶属于 StackOverflow