[英]Why double quote in bash can't expand the ''~"?
我一開始試過這個:
#!/bin/bash
V8_FOLDER=~/workspace/v8
cd ${V8_FOLDER}
pwd
它工作正常,輸出為/home/myname/workspace/v8
;
但是當我嘗試這樣做時:
#!/bin/bash
V8_FOLDER="~/workspace/v8"
cd ${V8_FOLDER}
pwd
出現錯誤,輸出為: ./update_and_compile: line 5: cd: ~/workspace/v8: No such file or directory
我以為雙引號是shell腳本中無引號的升級版,為什么會出現這種不一致的情況? 如果這里有問題,在 shell 腳本的文件夾中 cd 的正確方法是什么?
bash 版本:GNU bash,版本 4.4.20(1)-release (x86_64-pc-linux-gnu)
我以為雙引號是shell腳本中無引號的升級版,[…]
你錯了。
引用的目的是禁用各種特殊字符的特殊性。 例如,如果您有一個字面上名為~
的文件(我不推薦),您可以將其稱為\\~
或'~'
或"~"
。 (或者,由於~
僅在單詞的開頭是特殊的,您可以將其稱為./~
。)
重要的是在擴展(例如${V8_FOLDER}
周圍使用雙引號,以確保結果中的各種特殊字符不會被視為特殊字符; 但是當您真正想要它們禁用的特殊行為時,您不能使用雙引號,因為,好吧,它們禁用了它!
而不是~
使用${HOME}
任何類型的~
周圍的引用都可以防止這種波浪號擴展。
您可以將~
替換為$HOME
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.