我是新的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
有人可以解释为什么这不起作用以及语法错误意味着什么?谢谢!
答案 0 :(得分:1)
问题未在read
命令中使用引号。
将其用作:
IFS=$',' read x y z <<< "$n"
如果您在没有引号IFS=$',' read x y z <<< $n
的情况下使用它,则只有变量x
的值为:2 4 6
但y
和z
保持为空,因此下一组陈述导致错误。