看板 Linux 關於我們 聯絡資訊
請問,如果我有個目錄的路徑名稱裡有空格, 在shell script裡面應該怎樣輸入設定我的環境變數呢? 描述得清楚一點,例如: 路徑: "/home/user/testdir" 我可以在shell script裡輸入: export MYPATH=/home/user/testdir; 如此, 輸入 echo $MYPATH 就可以看到 MYPATH 的值是我方才設定的路徑. (當然要先source 剛剛編輯好的shell script檔案) 但是,當路徑名為"/home/user/test dir", (舉例來說) export MYPATH=/home/user/test\ dir; 就是無效的作法, 我上網搜尋過一些討論,都亂回答,或是解決辦法不難但有點迂迴. 例如: ------------------ mypath="dd d" cd "$mypath" ------------------ 諸如此類 (搜尋關鍵字用英文似乎比較可靠...= = 搜尋到簡體中文的頁面,就會有亂回答的.) 是否比較直接的方式 "export MYPATH=....."就可以解決呢? (為了這個,昨晚狗急跳牆,索性把目錄名稱有空格的都改掉....囧") http://www.programmingforums.org/thread15474.html 例如這一個討論串,解決辦法就如上面例子,拐個小彎. (自己要記得加 "" ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.152.196 ※ 編輯: MrWind 來自: 140.113.152.196 (11/15 18:50) ※ 編輯: MrWind 來自: 140.113.152.196 (11/15 18:50) ※ 編輯: MrWind 來自: 140.113.152.196 (11/15 19:04) ※ 編輯: MrWind 來自: 140.113.152.196 (11/15 19:04)
kdjf:叫的時候要用"$xx x", 因為空格是在expension時被展開的 11/15 22:22
kdjf:改IFS也可行,但是會有不少副作用 11/15 22:23
ckclark:cd "$MYPATH" 本來就該加雙引號 11/16 00:31
MrWind:樓上... 不一樣喔~ 有可以不必加雙引號的唷. 11/16 16:53
ckclark:我覺得加雙引號比其他解法都簡單 變數展開有空白的時候 11/17 01:01
ckclark:就會變成多個argument了(可以先下set -x看看) 11/17 01:01