if [[ ${account_nr} =~ ^[0-9]+$ && ${from_account_nr} =~ ^[0-9]+$ ]]
这是为了检查帐号是否为数字。我收到了语法错误。
此问题的早期版本缺少if
和[[
之间的空格;实际代码具有所需的空间。
显示以下错误消息:
syntax error: `${account_nr}' missing expression operator
我正在使用bash shell。你们人们告诉它正在发挥作用。但我正在试着像下面这样的例子,它给出了错误。
jai = "CNM"
hanuman = "BRK"
if [[ $jai =~ ^[0-9]+$ && $hanuman =~ ^[0-9]+$ ]]
then
echo "Jai hanuman"
echo "valid input"
fi
它显示如下错误。
./temp.sh: line 11: jai: command not found
./temp.sh: line 12: hanuman: command not found
在我的实际程序中,它不起作用: "现在我明确了问题:"
在此我要检查account_nr和from_account_nr值是否为数字 if if条件我给出了以下
if [[ ${SQL_STATEMENT} -gt 0 && ${account_nr} =~ ^[0-9]+$ && ${from_account_nr} =~ ^[0-9]+$ ]]
&{SQL_STATEMENT}
未显示任何错误,此SQL_STATEMENT
分配了SELECT查询返回的值。(总交易次数)。
当我运行脚本时,它显示以下错误。
语法错误:`$ {account_nr}'缺少表达式运算符。
请帮我解决问题。
答案 0 :(得分:3)
if
和[
之间需要一个空格:
$ account_num=1234
$ if [[ ${accoun_num} =~ ^[0-9]+$ ]] ; then echo "foo" ; fi
foo
$
此外,这在bash
:
$ account_nr=1234
$ from_account_nr=9876
$ if [[ ${account_nr} =~ ^[0-9]+$ && ${from_account_nr} =~ ^[0-9]+$ ]] ; then echo "foo" ; fi
foo
$
您的shell变量赋值也不能有空格。以下是对您最新版本的更正:
jai="CNM"
hanuman="BRK"
if [[ $jai =~ ^[0-9]+$ && $hanuman =~ ^[0-9]+$ ]]
then
echo "Jai hanuman"
echo "valid input"
fi
由于jai
或hanuman
都不是数字,因此上述脚本运行并输出任何内容。如果将它们都设置为数字,则会显示:
Jai hanuman
valid input
请注意,如果你放一个空格,如下:
jai = "CNM"
然后shell(bash
)认为您正在执行一个名为jai
的命令,并且您收到指示的错误。
答案 1 :(得分:0)
此行适用于Bash,Zsh或Ksh等高级shell。
if [[ ${account_nr} =~ ^[0-9]+$ && ${from_account_nr} =~ ^[0-9]+$ ]]
它不适用于POSIX shell但是-still-它不会显示语法错误。相反,它会显示找不到命令[[
。其他原因可能与if
声明本身有关,但您必须向我们展示确切显示的消息,例如bash: syntax error near unexpected token `fi'