“〜/ Desktop / test.txt:没有这样的文件或目录”
我写了这个脚本:
#!/bin/bash file="~/Desktop/test.txt" echo "TESTING" > $file
脚本不起作用; 它给了我这个错误:
./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory
我究竟做错了什么?
尝试用$HOME
replace~
。 只有当代字号不加引号时才会发生倾斜扩展。 参见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扩展 。