使用 expr 时出现语法错误
I am getting an syntax error when using expr
代码如下:
#!/bin/bash
reg='[0-9]{1}-[0-9]{2}-[0-9]{6}-[0-9Xx]{1}'
while read ISBN; do
if [[ $ISBN =~ '$$$' ]]; then
exit 0
else
if [[ $ISBN =~ $reg ]]; then
ISBN=${ISBN//-/}
let sum=0
let k=11
for index in `seq 1 10`; do
array[$index]=`echo $ISBN | cut -c"$index"`
k=$(expr $k - $index)
n=$(expr $k * ${array[$index]})
sum=$(expr $sum + $n)
echo $sum
done
#do something
else
echo Invaild
fi
fi
done
我的输入:
0-00-000001-1
错误:
expr: syntax error
expr: syntax error
但是当我在终端中 运行 expr 时,如下所示:
k=11
index=1
echo $(expr $k - $index)
有效well.Can你告诉我为什么?
使用 expr
,您需要转义 *
以避免它被扩展为文件 glob:
n=$(expr $k \* ${array[$index]})
对于算术表达式,这不是问题:
n=$(( $k * ${array[$index]} ))
代码如下:
#!/bin/bash
reg='[0-9]{1}-[0-9]{2}-[0-9]{6}-[0-9Xx]{1}'
while read ISBN; do
if [[ $ISBN =~ '$$$' ]]; then
exit 0
else
if [[ $ISBN =~ $reg ]]; then
ISBN=${ISBN//-/}
let sum=0
let k=11
for index in `seq 1 10`; do
array[$index]=`echo $ISBN | cut -c"$index"`
k=$(expr $k - $index)
n=$(expr $k * ${array[$index]})
sum=$(expr $sum + $n)
echo $sum
done
#do something
else
echo Invaild
fi
fi
done
我的输入:
0-00-000001-1
错误:
expr: syntax error
expr: syntax error
但是当我在终端中 运行 expr 时,如下所示:
k=11
index=1
echo $(expr $k - $index)
有效well.Can你告诉我为什么?
使用 expr
,您需要转义 *
以避免它被扩展为文件 glob:
n=$(expr $k \* ${array[$index]})
对于算术表达式,这不是问题:
n=$(( $k * ${array[$index]} ))