为什么这样做:
echo "foo" >> ~/Desktop/sf-speedtest-output.csv
但这不是吗?
outputFile="~/Desktop/sf-speedtest-output.csv"
echo "foo" >> $outputFile # Error: No Such file or directory
我在${}
,$()
,""
中尝试过。这不是逃避问题吗?
答案 0 :(得分:4)
~
- 扩展不会在带引号的字符串中发生。你可以逃脱这个:
outputFile=~/"Desktop/..."
或者这个:
outputFile="$HOME/Desktop/..."
有关详细信息,请参阅Tilde expansion或bash manual。
答案 1 :(得分:2)
因为代号~
扩展不是用双引号"
完成的
如果一个单词以不带引号的代字号('〜')开头,则全部为 字符直到第一个未加引号的斜杠(或所有字符,如果有的话) 是没有不带引号的斜杠)被认为是波浪号前缀
这应该依次工作
outputFile="/home/user/Desktop/sf-speedtest-output.csv"
echo "foo" >> $outputFile
或者
outputFile=~/"Desktop/sf-speedtest-output.csv"
echo "foo" >> $outputFile