如何对环境变量中设置的多个路径执行波浪扩展?

时间:2016-02-02 02:35:55

标签: shell posix tilde-expansion

以下代字号扩展按预期工作。

$ A=~/foo.txt
$ echo $A
/home/lone/foo.txt

在下列情况下,波浪线扩展不起作用,因为波浪号在引号内。

$ A="~/foo.txt ~/bar.txt"
$ echo $A
~/foo.txt ~/bar.txt

我知道我可以执行以下操作,因为环境变量会在引号内扩展。

$ A="$HOME/foo.txt $HOME/bar.txt"
$ echo $A
/home/lone/foo.txt /home/lone/bar.txt

但是有没有办法解决上面的第二个例子,以便在设置环境变量时波形扩展有效?

我试过这样的事情,但它并没有解决整个问题。

$ A=~/foo.txt" "~/bar.txt
$ echo $A
/home/lone/foo.txt ~/bar.txt

我还能做什么?

注意:该解决方案适用于任何POSIX shell。

1 个答案:

答案 0 :(得分:0)

试试这个:

eval echo $A

输出:

$ A="~/foo.txt ~/bar.txt"
$ echo $A
~/foo.txt ~/bar.txt
$ eval echo $A
/home/oracle/foo.txt /home/oracle/bar.txt