![在变量内回显变量](https://linux22.com/image/82702/%E5%9C%A8%E5%8F%98%E9%87%8F%E5%86%85%E5%9B%9E%E6%98%BE%E5%8F%98%E9%87%8F.png)
在我的环境中,设置了以下变量:
X=/home
所以echo $X
给了我/home
现在我设置Y=$X
回声$Y
给了我$X
。
如果我想/home
使用Y
可以吗?
答案1
对的,这是可能的。你可以使用这个得到你想要的结果
X='/home'
Y=$X
echo "$Y"
将产生所需的输出
/home
答案2
也许您使用了单引号来阻止对变量进行求值,并将其保留为 str !
你可以把这个有用的功能在你的 bashrc 或任何你需要的地方
setenv ()
{
(($#)) && {
[[ $# -gt 1 ]] && {
local v=$1
shift
case "$@" in
*'('*) #check if array
eval `echo $v=$@` ;
;;
*)
eval `echo $v="$@"` ;
;;
esac
} || {
eval echo "\$$1"
}
} || {
echo "$FUNCNAME set|get var|arr"
}
}
younes@h:~$ setenv
setenv set|get var|arr
younes@h:~$ setenv foo 'bar baz'
younes@h:~$ setenv foo
bar baz
younes@h:~$ setenv foo '(foo bar baz)'
younes@h:~$ setenv foo
foo
younes@h:~$ setenv {foo[@]}
foo bar baz
younes@h:~$ setenv {foo[0]}
foo
younes@h:~$ setenv {foo[1]}
bar
younes@h:~$ setenv {foo[2]}
baz
younes@h:~$ setenv {#foo[@]}
3
younes@h:~$