在Bash中附加到变量filename

时间:2015-04-25 09:41:29

标签: bash zsh

为什么这样做:

echo "foo" >> ~/Desktop/sf-speedtest-output.csv

但这不是吗?

outputFile="~/Desktop/sf-speedtest-output.csv"
echo "foo" >> $outputFile # Error: No Such file or directory

我在${}$()""中尝试过。这不是逃避问题吗?

2 个答案:

答案 0 :(得分:4)

~ - 扩展不会在带引号的字符串中发生。你可以逃脱这个:

outputFile=~/"Desktop/..."

或者这个:

outputFile="$HOME/Desktop/..."

有关详细信息,请参阅Tilde expansionbash manual

答案 1 :(得分:2)

因为代号~扩展不是用双引号"完成的

  

如果一个单词以不带引号的代字号('〜')开头,则全部为   字符直到第一个未加引号的斜杠(或所有字符,如果有的话)   是没有不带引号的斜杠)被认为是波浪号前缀

这应该依次工作

outputFile="/home/user/Desktop/sf-speedtest-output.csv"
echo "foo" >> $outputFile

或者

outputFile=~/"Desktop/sf-speedtest-output.csv"
echo "foo" >> $outputFile