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