:「〜/桌面/ test.txt的:沒有這樣的文件或目錄」 我寫這個劇本
#!/bin/bash
file="~/Desktop/test.txt"
echo "TESTING" > $file
的腳本不工作;它給了我這個錯誤:
./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory
我在做什麼錯?
:「〜/桌面/ test.txt的:沒有這樣的文件或目錄」 我寫這個劇本
#!/bin/bash
file="~/Desktop/test.txt"
echo "TESTING" > $file
的腳本不工作;它給了我這個錯誤:
./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory
我在做什麼錯?
嘗試用$HOME
代替~
。只有當代字號不加引號時纔會出現傾斜擴展。見info "(bash) Tilde Expansion"
。
你也可以在不引用它的情況下做file=~/Desktop
,但是如果你用某個字段分隔符代替它的一部分,那麼它將會中斷。無論如何,引用變量的值可能是一個好習慣。引用變量file=~/"Desktop"
也可以工作,但我認爲這相當難看。
在可能的情況下更喜歡$HOME
的另一個原因:波浪擴展只發生在單詞的開頭。因此command --option=~/foo
只有在command
代表擴展本身時纔會起作用,這將根據命令而有所不同,而command --option="$HOME/foo"
將始終有效。
哇,這工作!這是怎麼回事,我的腳本沒有? – Mason
已更新的答案。 –
@Mason - 另外,波形擴展發生在變量擴展之前,所以當'$ file'被轉換爲'〜/ Desktop/test.txt'時,你已經錯過了波浪號擴展階段。有關擴展順序,請參閱http://www.gnu.org/software/bash/manual/bashref.html#Shell-Expansions。 –
我改變了標題,使其更具描述性。 –
[Tilde擴展不能在Bash中工作]的可能的重複(https://stackoverflow.com/questions/5748216/tilde-expansion-not-working-in-bash) – codeforester