假设我有一个名为superEcho的函数。我希望它同时打印变量名及其值。
#!/bin/bash
function superEcho() {
echo "${v_day}"
echo '${v_day}'
}
v_day=20220101
superEcho ${v_day}
# output
# 20220101
# ${v_day}
从上面的代码中,我可以很容易地得到参数名称"{v_day}";及其价值。但是,如果我更改了变量的名称,该怎么办?例如:
v_last_day=20211231
superEcho ${v_last_day}
这个功能将不再工作。我可以更改它以适应任何变量名称吗?
附言:这是一个包装函数,它不会要求用户更改他们的代码。例如,不能将变量名作为参数传递:
superEcho "${v_day}" '${v_day}'
Bash支持使用${!parameter}
进行间接参数扩展,您可以将其与变量的名称一起使用:
#!/bin/bash
superEcho() {
echo "$1 = ${!1}"
}
v_day=20220101
superEcho v_day
(请注意,您的superEcho
版本不使用传递的参数,但在任何情况下都会打印v_day
。(