bash脚本:如何在for循环中使用嵌套if
我得到以下错误bash脚本:如何在for循环中使用嵌套if,bash,scripting,Bash,Scripting,我得到以下错误 #! /bin/bash count=1 step=(a b) for x in 0 1 do if [[ $count != '0' ]]; then if [[ ${step[x]} = "a"]]; then echo "Python test ($count)" else echo "stress test" fi fi done 为什么?如果,则在第二个
#! /bin/bash
count=1
step=(a b)
for x in 0 1
do
if [[ $count != '0' ]]; then
if [[ ${step[x]} = "a"]]; then
echo "Python test ($count)"
else
echo "stress test"
fi
fi
done
为什么?如果,则在第二个
中的“a”
和]
之间需要一个空格
更严格地说,[[
和]
必须是独立的标记,而bash的解析器不分离引号或大多数标点符号上的标记
我相信您的原始代码相当于if[${step[x]}=“a]”;然后
如果这使问题更加明显。改变
syntax error in conditional expression: unexpected token `;'
line 20: syntax error near `;
line 20: ` if [[ ${step[x]} = "a"]]; then'
到
i、 e.使用$x
代替x
,并在最后一个参数后添加一些空格
更新:你不需要在变量前面加上一个$
的数组下标符号(也在双括号(())
内,或者在let
关键字之后)。第9行是怎么变成第20行的?是的,数组中的x
是可以的,但是为什么呢?是的,没有$,它对我有效,问题是我在“a”]之后没有空格。是的,没有$对我有效,问题是我在“a”]之后没有空格。thanks@Slomojo:数组索引是一种不需要美元符号的算术上下文。类似地:((a++)
和echo$((a*b))
if [[ ${step[x]} = "a"]]; then
if [[ ${step[$x]} = "a" ]]; then