试图从ksh转换为bash。下面的行不断抛出错误
if [ (( ! -z $(echo $STR_CON | grep '^ *-.') )) || ( -z $STR_CON ) ] then
print -u2 "no connect string"
fi
尝试将方括号更改为[[
和((
,添加了;
仍然低于错误。这里可能是什么错误?
syntax error near unexpected token `('
bash版本
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>
答案 0 :(得分:0)
您可以在bash
中将这些条件转换为此:
if [[ -z $STR_CON || $STR_CON =~ ^ *-. ]]; then
print -u2 "no connect string"
fi
答案 1 :(得分:0)
OP不确定他要转换的代码的要求。 当它为空或其中包含上述字符之一时,可能不是连接字符串。 只是为了好玩:
sed -rn 's/^$|.*([\^ *-.]).*/no connect string/p ' <<< ${STR_CON}
一个正常的解决方案
grep -Eqv "^$|[\^ *-.]" <<< "${STR_CON}" ||
{ echo "no connect string"; echo "Perhaps return here"; }