2014-09-03 17 views
0

我無法理解bash中的以下代碼。獲取運行目錄名稱的方法

set `pwd` ; mfix=$1 

它實際上得到了運行目錄名。但我不知道它是如何工作的。 set命令是什麼意思?

回答

2

bash中的這段代碼將命令pwd的結果放在變量mfix中。

您可以通過運行

echo $mfix 
5

docset打印MFIX變量的結果:

此內置非常複雜,它值得自己的部分。設置爲 可以讓你改變shell選項的值,並且設置的位置參數或,或者顯示shell的變量的名稱和值。

例如,

set v1 v2 v3 ; echo $1 

將打印

v1 

內部反引號的COMAND被稱爲 「命令替換」。從docs

擊執行由執行命令和與所述命令的標準輸出替換 命令替換,刪除與任何 尾隨換行符的擴展。

在您的例子,它所述第一位置參數$1到反引號內命令的執行的結果的值。 (稱爲命令替換)。該命令是pwd顯示當前工作目錄的內容。

無論如何,如果目錄的路徑包含空格,則$1將僅獲得路徑的第一部分。

$ pwd 
/some/path with/space 
$ set `pwd` 
$ echo $1 
/some/path 
$echo $2 
with/space 

最後,所有上述奇怪的是設計,因爲你可以簡單地說:

mfix=$(pwd) #old school: mfix=`pwd` 

這是更好地使用$(command),而不是反引號。

+0

哈!你有和我一樣的疾病。 (檢查'簡單'應該'簡單')在從底部開始的第3行**最後**。鍵入'簡單'爲'簡單'就必須是人性化的......如果你發出'簡單',例如'簡單',你會'簡單'。誰知道...... – 2014-09-03 06:54:59

+0

@ DavidC.Rankin :)我很高興,因爲我從來沒有從英語學習過「英語」,但只能從互聯網上學到英語。因此,我幾乎可以閱讀(理解)幾乎任何東西(我有一個相對較好的詞彙),但不懂口語的英語,不知道正確的發音 - 所以不會說話,最後,我可以只寫一些(嚴格程式化)文本。 ;)/ Thanx - 編輯。:)/ – jm666 2014-09-03 07:03:54

+0

你寫得很好,做得很好! – 2014-09-03 07:09:52