bash${var_$i}中带有For循环的变量

bash${var_$i}中带有For循环的变量,bash,Bash,我在循环中调用定义的变量,它显示了“错误替换”错误。我知道我在脚本中做了一些错误的事情,或者这不是正确的做法。但从理论上讲,我应该能够在for循环中调用这些变量,这样,我的脚本就可以执行定义这些变量的次数 #!/bin/bash export CONFIG_FILE=$1 . $CONFIG_FILE for (( i = 1 ; i <= $Deploys; i++ )) do echo ${Source_Path_$i} echo ${De

我在循环中调用定义的变量,它显示了“错误替换”错误。我知道我在脚本中做了一些错误的事情,或者这不是正确的做法。但从理论上讲,我应该能够在for循环中调用这些变量,这样,我的脚本就可以执行定义这些变量的次数

#!/bin/bash

export CONFIG_FILE=$1

. $CONFIG_FILE

for ((  i = 1 ;  i <= $Deploys;  i++  ))
do
        echo ${Source_Path_$i}
        echo ${Dest_Server_$i}
        echo ${Dest_Path_$i}
done
这是我在执行bash脚本时遇到的错误

line 9: ${Source_Path_$i}: bad substitution

您可以将变量间接寻址与
${!var}
一起使用,以可靠地解决问题。但是,它有点冗长:

for (( i = 1 ;  i <= $Deploys;  i++ )); do
    source="Source_Path_$i"
    echo "${!source}"
    server="Dest_Server_$i"
    echo "${!server}"
    path="Dest_Path_$i"
    echo "${!path}"
done

for((i=1;i由于您“源”配置文件,因此不再需要使用导出,而且最好只使用数组:

Deploys=2

Source_Path[1]=./Source1
Dest_Server[1]=Server1
Dest_Path[1]=/Destination1

Source_Path[2]=./Source2
Dest_Server[2]=Server2
Dest_Path[2]=/Destination2
有这样一个脚本:

#!/bin/bash

CONFIG_FILE=$1

. "$CONFIG_FILE"

for (( i = 1; i <= Deploys; i++ ))
do
    echo "${Source_Path[i]}"
    echo "${Dest_Server[i]}"
    echo "${Dest_Path[i]}"
done
!/bin/bash
配置文件=$1
.“$CONFIG_文件”
对于((i=1;i
#!/bin/bash

CONFIG_FILE=$1

. "$CONFIG_FILE"

for (( i = 1; i <= Deploys; i++ ))
do
    echo "${Source_Path[i]}"
    echo "${Dest_Server[i]}"
    echo "${Dest_Path[i]}"
done
#!/bin/bash

CONFIG_FILE=$1

. "$CONFIG_FILE"

for (( i = 1; i <= Deploys; i++ ))
do
    eval "echo \"\${Source_Path_$i}\""
    eval "echo \"\${Dest_Server_$i}\""
    eval "echo \"\${Dest_Path_$i}\""
done