bash${var_$i}中带有For循环的变量
我在循环中调用定义的变量,它显示了“错误替换”错误。我知道我在脚本中做了一些错误的事情,或者这不是正确的做法。但从理论上讲,我应该能够在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
#!/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