在变量内回显变量

在变量内回显变量

在我的环境中,设置了以下变量:

X=/home

所以echo $X给了我/home

现在我设置Y=$X

回声$Y给了我$X

如果我想/home 使用Y可以吗?

答案1

对的,这是可能的。你可以使用这个得到你想要的结果

X='/home'
Y=$X
echo "$Y"

将产生所需的输出

/home

了解更多http://tldp.org/LDP/abs/html/special-chars.html

答案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:~$

相关内容