【问题标题】:Linux Bash how to grab output and put it back in the script using for loopLinux Bash 如何使用 for 循环获取输出并将其放回脚本中
【发布时间】:2018-05-21 04:58:26
【问题描述】:

bash 中的变量值可以通过echo $var 这样的命令轻松调用

user@linux:~$ a=1; b=2; c=a+b
user@linux:~$ echo $a $b $c
1 2 a+b
user@linux:~$ 

我想要完成的是将x 替换为a,b,c 中的实际值

user@linux:~$ a=1; b=2; c=a+b
user@linux:~$ for i in a b c; do echo "$i = x"; done
a = x
b = x
c = x
user@linux:~$ 

通过使用类似的for循环,我希望我能得到这样的输出

a = 1
b = 2
c = a+b

【问题讨论】:

    标签: linux bash indirection


    【解决方案1】:

    使用间接

    $ for i in a b c; do echo "$i = ${!i}"; done
    a = 1
    b = 2
    c = a+b
    

    文档

    间接man bash中解释:

    如果参数的第一个字符是感叹号(!),并且 参数不是nameref,它引入了一个变量级别 间接性。 Bash 使用由其余部分形成的变量的值 参数的名称作为变量的名称;那么这个变量是 扩展并且该值用于其余的替换, 而不是参数本身的值。这被称为间接 扩张。如果 parameter 是 nameref,则扩展为 name 由参数引用的变量,而不是执行 完全间接扩展。例外情况 这是 ${!prefix*} 和 ${!name[@]} 的扩展描述 以下。感叹号必须紧跟在左边 大括号以引入间接性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多