Abh*_*ran 4 bash variable-substitution
程序片段:
BASH_MIN_REQ="2.05"
BINUTILS_MIN_REQ="2.12"
BISON_MIN_REQ="1.875"
BASH_CURR=$(bash --version | head -n1 | cut -d"(" -f1 | cut -d" " -f4)
BINUTILS_CURR=$(ld --version | head -n1 | cut -d" " -f7)
BISON_CURR=$(bison --version | head -n1 | cut -d" " -f4)
list=(BASH BINUTILS BISON)
for progs in ${list[@]}; do
echo "$progs: ${${progs}_MIN_REQ}:${${progs}_CURR}"
done
Run Code Online (Sandbox Code Playgroud)
预期输出:
BASH: 2.05:4.3.11
BINUTILS: 2.12:2.24
BISON: 1.875:3.0.2
Run Code Online (Sandbox Code Playgroud)
注意用值初始化的变量。我想${progs}_MIN_REQ用$BASH_MIN_REQ它初始化的值 2.05替换然后再次替换。并在for循环内执行此操作,以便我编写代码更容易,因为我只需要编写 1 条echo语句而不是 3 条语句。
实际输出:
bad substitution
Run Code Online (Sandbox Code Playgroud)
我知道我写的echo是wrong. 但是有没有办法双重替换变量。否则我将不得不写很多echo声明。
你可以通过间接方式做到这一点
for progs in ${list[@]}; do
a="${progs}_MIN_REQ"
b="${progs}_CURR"
echo "$progs: ${!a}:${!b}"
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |