本文轉貼自PTT
台灣最大的本土社群網站
分享這篇文章到Facebook、Google+或噗浪!


 作者  MrWind (波西米亞)                                          看板  Linux 
 標題  [問題] PATH環境變數的設定                                              
 時間  Tue Nov 15 18:49:34 2011                                               
───────────────────────────────────────


請問,如果我有個目錄的路徑名稱裡有空格,
在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


----本文使用PCMAN+BBI轉貼----


※ 新版PCMAN開放測試中,新增功能:    



用PCMAN+BBI連回PTT原文