【问题标题】:Bash loop to fetch different variablesBash循环以获取不同的变量
【发布时间】:2020-11-12 13:01:24
【问题描述】:

有没有可能做这样的事情

#!/bin/bash 
noOfParameters=2
paramname1="test1"
paramname2="test2"
i=0
while [ $i -ne ${noOfParameters} ]
  do 
     i=`expr $i + 1`
     echo ${paramname$i}
 done

我正在尝试实现输出为

test1
test2

我收到"main.sh: line 10: ${paramname$i}: bad substitution" 错误

【问题讨论】:

标签: string bash variables unix


【解决方案1】:

我个人会使用数组来做这个

arr[0]="test"
arr[1]="test2"

for item in "${arr[@]}"
do
  printf "%s\n" "$item"
done

【讨论】:

    【解决方案2】:

    您可以使用间接引用,例如

    for ((i=1;i<3;i++)); do
       varname=paramname$i
       echo "${!varname}"
    done
    

    也许你可以用类似的东西绕过你的问题

    set | grep -E "paramname[12]=" | cut -d"=" -f2
    

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多