2012-03-08 33 views
1

這些days.i'm學習shell腳本的fun.When我喜歡閱讀手冊的例子:

set $(wc -l $title_file) 
    num_titles=$1 
    set $(wc -l $tracks_file) 
    num_tracks=$1 

和我有短暫的理解是,命令,設置,指定$ 1和設定值$ 1到num_titles。 但是,我不知道爲什麼要用-l作爲該命令的選項,順便set.And,將任何人可以解釋它的整個故事?THX

+0

這個例子很奇怪。跳過set命令會更常見,只需寫下:num_titles = $(wc -l $ title_file) – 2012-03-08 13:18:43

回答

3

首先set設置一個環境變量。 根據其手冊頁使用語法set var = valueset var [n] = word查看手冊頁類型man set

在這種情況下,set使用第二種語法制作$1 = $(wc -1 $titlefile),然後將num_titles設置爲$ 1作爲常規變量,因爲使用的語法。

wc是wordcount命令,並顯示文件中的行,字符和單詞。

wc -l告訴wc根據wc手冊頁逐行計數,以查看手冊頁類型man wc

查看Linux Shell Scripting Tutorial A Beginner's handbookAdvanced Bash-Scripting Guide作進一步參考。

+0

我明白了,thx.And順便說一下,無論何時,默認情況下,我使用命令,設置,它會將新值設置爲第一個參數? – 2012-03-08 06:18:08

+0

是的,這是正確的,根據設置手冊頁子句'其餘 參數是位置參數,並按 訂單分配給$ 1,$ 2,....' – Appleman1234 2012-03-08 07:40:54

+0

在sh中,'set'不使用所描述的語法這裏。在csh中,這裏使用的語法設置了一個變量,但不是一個環境變量。 – 2012-03-08 13:17:39

3

-l開關計數的數目在你的情況下,在指定文件 中的行,它將計算titles文件中的行數並將其設置爲num_titles變量(並計算由tracks_file變量指定的文件中的行數並設置該值到num_track變量)

,你可以簡單地嘗試 廁所-l命令行上 看到的價值它打印出

+0

我明白了,thx.And順便說一下,無論何時,默認情況下,我使用命令set會將新值設置爲第一個參數嗎? – 2012-03-08 06:16:02

+0

是的。所以,如果你做**設置abc **變量$ 1現在等於「a」,$ 2 = b和$ 3 = c – 2012-03-08 06:32:47

相關問題