以下波浪号扩展按预期工作。
$ 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 外壳。
试试这个:
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