在MacOSX中,可以在Finder中創建一個名稱中包含正斜槓「/」的文件夾。
我試圖bash腳本做類似的東西一樣來
args=("[email protected]")
name=${args[0]}
street_corner=${args[1]}
my_folder="Hello ${name} - ${streetcorner}"
mk() {
case "$1" in /*) :;; *) set -- "./$1";; esac
mkdir -p "$1"
}
mk $my_folder
其中街角是交叉的格式爲「街1 /街頭2」,因此需要的斜線被保存在目錄名稱。
我讀several articles like this one他們解釋瞭如何操縱字符串以便在您自己設置字符串時轉義或保持向前。我遇到的問題是用戶傳遞參數在腳本中使用,因此當我運行該命令來創建一個以$ my_folder作爲參數的目錄時,字符串已經被封裝。
如何擴展street_corner的值而不讓正斜槓創建名爲「street 2」的子目錄位於目錄「street 1」內,而是創建一個名爲「street 1/street 2」的目錄?
我嘗試了這些修復和故障
street_corner="${args[0]}"
my_folder='"Hello ${name} - ${streetcorner}"'
my_folder="'Hello ${name} - ${streetcorner}'"
my_folder="Hello ${name} - ${'streetcorner'}"
my_folder="Hello ${name} - ${$"streetcorner"}"
my_folder="Hello "${name}" - "${streetcorner}
而且還試圖給出street_corner輸入像
./my_script.sh "name" "street 1\/street 2"
./my_script.sh "name" 'street 1/street 2'
./my_script.sh "name" "'street 1/street 2'"
因此,您需要將streetcorner中的斜線轉換爲文件名中的冒號。這應該工作:'my_folder =「Hello $ {name} - $ {streetcorner // \ //:}」。你可以在花括號中讀到這樣的混亂:streetcorner變量的值('streetcorner')與所有出現的(''''''斜槓字符''''''' - 注意它被轉義了,所以它不會是誤認爲是分隔符)替換爲('/')冒號(':')。 –
感謝@chepner和@ gordon-davisson! =) – Discofan