我写过这个剧本:
#!/bin/bash
file="~/Desktop/test.txt"
echo "TESTING" > $file
脚本不起作用;它给了我这个错误:
./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory
我做错了什么?
答案 0 :(得分:56)
尝试将~
替换为$HOME
。仅在波浪线未引用时才会发生Tilde扩展。请参阅info "(bash) Tilde Expansion"
。
您也可以在不引用的情况下执行file=~/Desktop
,但是如果您用其中的字段分隔符替换其中的部分内容,那么它将会中断。引用变量的值可能是养成习惯的好事。引用变量file=~/"Desktop"
也会起作用,但我觉得这很难看。
在可能的情况下更喜欢$HOME
的另一个原因:波浪扩展只发生在单词的开头。因此command --option=~/foo
仅在command
确实扩展自身时才会起作用,这会因命令而异,而command --option="$HOME/foo"
将始终有效。
答案 1 :(得分:1)