私の環境では、次の変数が設定されます。
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:~$