這些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
這些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
首先set
設置一個環境變量。 根據其手冊頁使用語法set var = value
或set 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 handbook和Advanced Bash-Scripting Guide作進一步參考。
我明白了,thx.And順便說一下,無論何時,默認情況下,我使用命令,設置,它會將新值設置爲第一個參數? – 2012-03-08 06:18:08
是的,這是正確的,根據設置手冊頁子句'其餘 參數是位置參數,並按 訂單分配給$ 1,$ 2,....' – Appleman1234 2012-03-08 07:40:54
在sh中,'set'不使用所描述的語法這裏。在csh中,這裏使用的語法設置了一個變量,但不是一個環境變量。 – 2012-03-08 13:17:39
-l開關計數的數目在你的情況下,在指定文件 中的行,它將計算titles文件中的行數並將其設置爲num_titles變量(並計算由tracks_file變量指定的文件中的行數並設置該值到num_track變量)
,你可以簡單地嘗試 廁所-l命令行上 看到的價值它打印出
我明白了,thx.And順便說一下,無論何時,默認情況下,我使用命令set會將新值設置爲第一個參數嗎? – 2012-03-08 06:16:02
是的。所以,如果你做**設置abc **變量$ 1現在等於「a」,$ 2 = b和$ 3 = c – 2012-03-08 06:32:47
這個例子很奇怪。跳過set命令會更常見,只需寫下:num_titles = $(wc -l $ title_file) – 2012-03-08 13:18:43