“〜/ Desktop / test.txt:没有这样的文件或目录”

我写了这个脚本:

#!/bin/bash file="~/Desktop/test.txt" echo "TESTING" > $file 

脚本不起作用; 它给了我这个错误:

 ./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory 

我究竟做错了什么?

尝试用$HOMEreplace~ 。 只有当代字号不加引号时才会发生倾斜扩展。 参见info "(bash) Tilde Expansion"

你也可以在没有引用它的情况下做file=~/Desktop ,但是如果你用一个字段分隔符代替它的一部分,那么它将会中断。 引用variables的值可能是养成习惯的好方法。 引用variablesfile=~/"Desktop"也将工作,但我认为这是相当丑陋的。

在可能的情况下,首选“首选”的另一个原因是:代字符扩展仅在单词的开头发生。 所以command --option=~/foo只有在command --option="$HOME/foo"扩展本身的时候才会起作用,而command --option="$HOME/foo"将始终工作。

仅供参考,您也可以使用eval

 eval "echo "TESTING" > $file" 

eval将该命令作为参数,并使shell执行Tilde扩展 。