我有以下功能:
testit()
{
[ "$1" == "OK" ] && echo "good" || echo "bad"
}
但它没有按预期工作。我可以用它来打电话:
testit 'OK' #good
testit 'abc' #bad
但是当我用它打电话时:
testit '('
它失败了:“sh:关闭paren预期”。我引用了字符串进行测试,为什么它的行为就像没有引号?
答案 0 :(得分:1)
这很可能是shell实现中的一个错误。我已经在最新的CentOS上测试了你的代码,它运行正常。
testit '('
bad
sh -version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
答案 1 :(得分:0)
这是一个丑陋的解决方法:
if [ "x$1" = "xOK" ]; ...