Bash 使用另一个变量打印变量

Bash 使用另一个变量打印变量,bash,echo,Bash,Echo,我的脚本设置如下,我想使用循环打印开关名称 swn1="something" swn2="somethingelse" for (( i=1; i<="$ii"; i++ )) do echo "$swn$i " done 我搜索了又搜索,但运气不好,有人能帮我如何使用for loop打印swn吗?你不能这样做。swn1是一个令牌,swn2是另一个令牌。看起来您想要一个数组,如果您想要bash脚本中的数组,您可以将值作为文件中的

我的脚本设置如下,我想使用循环打印开关名称

swn1="something"
swn2="somethingelse"

for (( i=1; i<="$ii"; i++ ))
    do              
       echo "$swn$i "
    done
我搜索了又搜索,但运气不好,有人能帮我如何使用for loop打印swn吗?

你不能这样做。swn1是一个令牌,swn2是另一个令牌。看起来您想要一个数组,如果您想要bash脚本中的数组,您可以将值作为文件中的单独行进行处理,或者切换到使用Perl

单独的行:

echo "something" > swnfile;
echo "somethingelse" >> swnfile;
cat file | while read line; do
    echo "$line";
done
你不能这样做。swn1是一个令牌,swn2是另一个令牌。看起来您想要一个数组,如果您想要bash脚本中的数组,您可以将值作为文件中的单独行进行处理,或者切换到使用Perl

单独的行:

echo "something" > swnfile;
echo "somethingelse" >> swnfile;
cat file | while read line; do
    echo "$line";
done

解决这个问题的方法是变量间接寻址

swn1="something"
swn2="somethingelse"

for (( i=1; i<="$ii"; i++ ))
    do              
        var="swn$i"
        echo "${!var}"
    done
虽然通常可以用数组解决问题,但使用另一个数组打印变量的方法是通过它

如bash手册中所述:

如果参数的第一个字符是感叹号!,A. 引入了变量间接层次。Bash使用 由参数的其余部分组成的变量,作为 变量然后展开此变量,并在 替换的其余部分,而不是参数本身的值。 这就是所谓的间接扩张。例外情况是 ${!prefix}和${!name[@]}的扩展。这个 感叹号必须紧跟在左大括号之后,以便 引入间接性

swn1="something"
swn2="somethingelse"

for (( i=1; i<="$ii"; i++ ))
    do              
        var="swn$i"
        echo "${!var}"
    done

解决这个问题的方法是变量间接寻址

swn1="something"
swn2="somethingelse"

for (( i=1; i<="$ii"; i++ ))
    do              
        var="swn$i"
        echo "${!var}"
    done
虽然通常可以用数组解决问题,但使用另一个数组打印变量的方法是通过它

如bash手册中所述:

如果参数的第一个字符是感叹号!,A. 引入了变量间接层次。Bash使用 由参数的其余部分组成的变量,作为 变量然后展开此变量,并在 替换的其余部分,而不是参数本身的值。 这就是所谓的间接扩张。例外情况是 ${!prefix}和${!name[@]}的扩展。这个 感叹号必须紧跟在左大括号之后,以便 引入间接性

swn1="something"
swn2="somethingelse"

for (( i=1; i<="$ii"; i++ ))
    do              
        var="swn$i"
        echo "${!var}"
    done

听起来你想要一个数组

swn=("something" "something else")

for i in "${swn[@]}"
do
    echo $i
done

听起来你想要一个数组

swn=("something" "something else")

for i in "${swn[@]}"
do
    echo $i
done

请改进代码的格式。好的,我会的,但是你能帮我吗!!请改进代码的格式。好的,我会的,但是你能帮我吗!!Tnx konsolebox,我应该首先使用数组,我让它像swn[1]=something swn[2]=somethingelse ii=2那样工作,因为i=1;iTnx konsolebox,我应该首先使用数组,我让它像swn[1]=somethingswn[2]=somethingelseii=2那样工作,因为i=1;我