我說過了,shell是我的常規(guī)武器,目前雖然還不純熟,但是我愛shell這門語言,在Linux下面混,總要寫腳本。程序員是有基因,對編程語言是有偏好的,你讓我寫C代碼,我會覺得很爽,會有困難,會有痛苦的摸索和學(xué)習(xí),但是,我愿意;學(xué)習(xí)shell/python,我也很樂意,甚至Lisp這種冷門的語言我也充滿了好奇,雖然現(xiàn)在Go和Erlang我一點也不懂,但是我按耐不住對這兩種語言的興趣,只要我抽出手來,一定會和他們纏綿一番。有愛就會有恨,我痛苦地意識到到自己是個很情緒化的程序員,哪怕我一遍遍地罵自己bitch is bitchy,一遍遍的告訴自己要端正態(tài)度,學(xué)習(xí)CSS/HTML/仍然讓我痛苦的死去活來,可以預(yù)計的是,讓我學(xué)習(xí)Java我也會很痛苦(我也清楚地明白,痛苦之烈一定不如學(xué)習(xí)CSS/HTML的痛苦)。我知道我在跑題,我賤人就是矯情,但是我壓抑的太難受了,不找個地方發(fā)泄一下,我會把自己憋壞。
shell編程經(jīng)常會遇到參數(shù)個數(shù)不定的這種情況,這種情況怎么處理呢?shift就要閃亮登場了。
$#是入?yún)⒌膫€數(shù),
$@是當前所有的入?yún)?
$0是腳本的名字
$1是第一個入?yún)ⅲ?2是第二個入?yún)ⅰ!!!?
Bash定義了$1到$9,一共9個位置變量,這就決定了我們不能無限制的用$11之類的來獲取更多的入?yún)ⅰ?
這時候就需要用shift了,shift會將入?yún)⒂乙疲缦聢D所示:

我們看一段shell代碼,加深理解:
復(fù)制代碼 代碼如下:
root@manu:~/code/shell/temp# cat test.sh
#!/bin/sh
until [ $# -eq 0 ]
do
echo "$@"
shift
done
看下輸出:
復(fù)制代碼 代碼如下:
root@manu:~/code/shell/temp# ./test.sh 10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
現(xiàn)在,如果入
主站蜘蛛池模板:
广灵县|
昌吉市|
阳曲县|
疏勒县|
华安县|
吉林省|
饶河县|
长治市|
云阳县|
新干县|
盐源县|
台中市|
上虞市|
无为县|
宣恩县|
耒阳市|
扎囊县|
通城县|
望城县|
平和县|
吴江市|
东山县|
大新县|
文化|
东海县|
水富县|
云南省|
高唐县|
永仁县|
麻城市|
马山县|
凤山县|
金阳县|
昆明市|
当阳市|
长岭县|
无极县|
和龙市|
花莲市|
双辽市|
新沂市|