eju*_*ser 12 shell bash variable
有什么方法可以打印变量名称及其值吗?
j=jjj
k=kkk
l=lll
for i in j k l
do
....
done
Run Code Online (Sandbox Code Playgroud)
预期输出(每个变量在单独的行上):
j = jjj
k = kkk
l = lll
Run Code Online (Sandbox Code Playgroud)
任何人都可以提出一种获得上述结果的方法吗?
Rom*_*est 25
以简单的方式:
j="jjj"
k="kkk"
l="lll"
for i in {j,k,l}; do echo "$i = ${!i}"; done
Run Code Online (Sandbox Code Playgroud)
输出:
j = jjj
k = kkk
l = lll
Run Code Online (Sandbox Code Playgroud)
${!i}
- bash变量扩展/间接(获取由 持有的变量名的值$i
)如果您有 bash v4.4 或更高版本,则可以使用${VAR@A}
参数扩展运算符。
这在 Bash 手册中的3.5.3 Shell Parameter Expansion部分中进行了讨论
“A”运算符
扩展是赋值语句或声明命令形式的字符串,如果求值,将使用其属性和值重新创建参数。
因此,您可以这样做:
j="jjj"
k="kkk"
l="lll"
for i in {$j,$k,$l}; do
echo "${i@A}"
done
Run Code Online (Sandbox Code Playgroud)
你的结果应该是:
j='jjj'
k='kkk'
l='lll'
Run Code Online (Sandbox Code Playgroud)
或者在zsh
使用中declare -p
% j=jjj; k=kkk; l=(l l l)
% for v in j k l; do declare -p $v; done
typeset j=jjj
typeset k=kkk
typeset -a l=( l l l )
%
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24335 次 |
最近记录: |