簡體   English   中英

為什么bash中的雙引號不能擴展''~”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM