23

という名前のフォルダーがFooあるとします/home/user/(私/home/userも で表され~ます)。

変数を持ちたい

a="~/Foo"そして、する

cd $a

私は得る -bash: cd: ~/Foo: No such file or directory

しかし、私がやるだけならうまくいきcd ~/Fooます。これを機能させる方法の手がかりはありますか?

4

5 に答える 5

29

あなたがすることができます(変数の割り当て中に引用符なしで):

a=~/Foo
cd "$a"

ただし、この場合、変数$aは格納されません~/Fooが、展開されたフォームが格納され/home/user/Fooます。または、次を使用できますeval

a="~/Foo"
eval cd "$a"
于 2011-04-21T18:34:58.687 に答える
16

チルダの代わりに を使用できます$HOME(チルダはシェルによって の内容に展開されます$HOME)。例:

dir="$HOME/Foo";
cd "$dir";
于 2011-04-21T18:34:57.833 に答える
1

はるかに堅牢なソリューションは、sed またはさらに優れた bash パラメーター展開のようなものを使用することです。

somedir="~/Foo/test~/ing";
cd "${somedir/#\~/$HOME}"

または、sed を使用する必要がある場合は、

cd $(echo "$somedir" | sed "s#^~#$HOME#")
于 2012-05-07T21:09:32.190 に答える
-1

二重引用符を使用すると、~ はその文字として $a に保持されます。

変数値はシェルによって展開されないため、 cd $a は ~ を展開しません。

解決策は次のとおりです。

eval "cd $a"

于 2011-04-21T19:17:20.873 に答える