変数内の変数エコー

変数内の変数エコー

私の環境では、次の変数が設定されます。

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

関連情報