という名前のフォルダーがFooあるとします/home/user/(私/home/userも で表され~ます)。
変数を持ちたい
a="~/Foo"そして、する
cd $a
私は得る
-bash: cd: ~/Foo: No such file or directory
しかし、私がやるだけならうまくいきcd ~/Fooます。これを機能させる方法の手がかりはありますか?
という名前のフォルダーがFooあるとします/home/user/(私/home/userも で表され~ます)。
変数を持ちたい
a="~/Foo"そして、する
cd $a
私は得る
-bash: cd: ~/Foo: No such file or directory
しかし、私がやるだけならうまくいきcd ~/Fooます。これを機能させる方法の手がかりはありますか?
あなたがすることができます(変数の割り当て中に引用符なしで):
a=~/Foo
cd "$a"
ただし、この場合、変数$aは格納されません~/Fooが、展開されたフォームが格納され/home/user/Fooます。または、次を使用できますeval。
a="~/Foo"
eval cd "$a"
チルダの代わりに を使用できます$HOME(チルダはシェルによって の内容に展開されます$HOME)。例:
dir="$HOME/Foo";
cd "$dir";
はるかに堅牢なソリューションは、sed またはさらに優れた bash パラメーター展開のようなものを使用することです。
somedir="~/Foo/test~/ing";
cd "${somedir/#\~/$HOME}"
または、sed を使用する必要がある場合は、
cd $(echo "$somedir" | sed "s#^~#$HOME#")
二重引用符を使用すると、~ はその文字として $a に保持されます。
変数値はシェルによって展開されないため、 cd $a は ~ を展開しません。
解決策は次のとおりです。
eval "cd $a"