2012-09-14 55 views
1

我已經看過一些有類似問題的帖子,但我不能推斷一些解決方案以適應自己的需求,所以我在這裏。光盤到一個未知的目錄名稱與空格在bash腳本

我有一個簡單的shell腳本,我需要它來cd到名稱中有一個空格的目錄。該目錄每次都在相同的位置(/home/user/topleveldir),但是目錄名稱本身對於計算機是唯一的,並且其中有一個空格(/home/user/topleveldir/{machine1}\ dir//home/user/topleveldir/{machine2}\ dir/)。我很困惑,以最好的方法來在腳本中進入該唯一目錄。

回答

2

我不明白爲什麼像以下是行不通的

baseDir=/home/user/topleveldir 
machine=<whatever machine name> 
cd "$baseDir/$machine dir" 
+0

你應該可以逃脫那個空間...... – Buggabill

+1

它被引用,不需要轉義。剛剛測試過它。 –

+0

我立場正確 - 現在就坐。 – Buggabill

1

你需要引述空格字符,從而使外殼知道,它的參數的一部分,而不是自變量之間的隔板。

如果您在腳本的該命令行上直接使用目錄,請使用單引號。在單引號之間,除了單引號之外,每個字符都被逐字解釋。

cd '/home/user/topleveldir/darkstar dir/' 

如果目錄名來自變量,請在命令替換周圍使用雙引號。 總是在命令替換(例如, "$foo"。如果省略引號,則變量的值將被拆分爲單獨的單詞,這些單詞被解釋爲全局模式 - 這是非常不可取的。

directory_name='darkstar dir' 
… 
cd "/home/user/topleveldir/$directory_name" 
相關問題