Bash / shell脚本:表达式中的语法错误

时间:2014-09-17 14:12:25

标签: bash shell

我是新的shell脚本,并且对我的代码有一个快速的问题。 这有效:

x=2
y=4
z=6
x=$(( $x-1 ))
y=$(( $y-2 ))
z=$(( $z-3 ))
echo $x $y $z

$ script.sh
1 2 3

这有效:

n=2,4,6
IFS=$',' read x y z <<< $n
echo $x $y $z

$ script.sh
2 4 6

但是这会导致语法错误:

n=2,4,6
IFS=$',' read x y z <<< $n
x=$(( $x-1 ))
y=$(( $y-2 ))
z=$(( $z-3 ))
echo $x $y $z

$ script.sh
syntax error in expression (error token is "4 6-1 ")
2 4 6 -2 -3

有人可以解释为什么这不起作用以及语法错误意味着什么?谢谢!

1 个答案:

答案 0 :(得分:1)

问题未在read命令中使用引号。

将其用作:

IFS=$',' read x y z <<< "$n"

如果您在没有引号IFS=$',' read x y z <<< $n的情况下使用它,则只有变量x的值为:2 4 6yz保持为空,因此下一组陈述导致错误。