shell 獲取倒數(shù)第二個參數(shù)

需求是這樣的:那么今天閑著想把腳本弄得更自(無)動(腦)化(懶),shell腳本后帶參數(shù)執(zhí)行芥吟,其中參數(shù)的個數(shù)不確定(包含列表)迁酸,而現(xiàn)在腳本模塊需要獲取傳入的倒數(shù)第2個參數(shù)和除倒數(shù)第一個參數(shù)外的全部參數(shù)炸宵,不想用循環(huán)列出來券膀,想用類似python的切片方式君纫,所以今天就跟這有關(guān)系的awk、shell數(shù)組芹彬、字符輸出和特殊變量磕上了蓄髓。shell也能好好玩......

實例:/bin/bash script.sh "1001 1002 1003 1004 1005" 1 ?, 腳本里面要賦值給變量a=1005 , b="1001 1002 1003 1004"

#!/bin/bash

function A(){

? ? a=${!#}

? ? b=${@:1:$#-1}

}

A $1

? ? 這里"1001 1002 1003 1004 1005"會以列表形式傳入,用數(shù)組的方法行不通的舒帮,但是研究一下不難發(fā)現(xiàn)分片方法同樣適用会喝。${@:1:$#-1} 其中$@是列表形式列出所有的傳入?yún)?shù),然后:1是從第一個參數(shù)開始玩郊,后面不加任何東西的話是一直到結(jié)尾肢执,而加:$#-1是$#是參數(shù)總個數(shù)-1,即顯示除去最后一個參數(shù)外的所有參數(shù)瓦宜。

若要獲取倒數(shù)第二個參數(shù)即c=1004蔚万,可以這樣實現(xiàn):

c=${@:$#-1:1}


一開始模糊了shell的數(shù)組概念,想通過數(shù)組實現(xiàn)的临庇,所以也歸納一下數(shù)組反璃、變量字符輸出以及特殊字符用法:

首先要知道shell數(shù)組是以什么形式展現(xiàn)的~

數(shù)值類型的數(shù)組:一對括號表示數(shù)組,數(shù)組中元素之間使用“空格”來隔開假夺。

arr_num=(5 4 3 2 1)

字符串類型數(shù)組:同樣淮蜈,使用一對括號表示數(shù)組,其中數(shù)組中的元素使用雙引號或者單引號包含已卷,同樣使用“空格”來隔開梧田。

arr_str=('aaa' 'bbb' 'ccc')

數(shù)組操作:

先賦值一個數(shù)組 arr_num=(5 4 3 2 1)

獲取數(shù)組長度:len=${#arr_num[@]}

讀取第一個參數(shù):a=${arr_num[0]}

給第一個參數(shù)賦值(會覆蓋):arr_num[0]=1

echo ${arr_num[@]} ? >>> ? ? ?(1 4 3 2 1)

賦值給一個新參數(shù)會追加到數(shù)組后面:arr_num[10]=9 ? ? ? ? ? ? ? ? arr_num[8]=0

echo ${arr_num[@]}? >>>? ? ? (5 4 3 2 1 0 9)

刪除第一個參數(shù):unset arr_num[0]

分片(獲取第2到第4個參數(shù)):${arr_num[@]:1:3}

替換:${arr_num[@]/1/55}

echo ${arr_num[@]}? >>> ? ? ?(5 4 3 2 55)


shell的字符輸出

假設(shè)有變量 test=http://www.baidu.com/haha.html

注:(左邊的第一個字符是用 0 表示,右邊的第一個字符用 0-1 表示)

1. # 號截取侧蘸,刪除左邊字符裁眯,保留右邊字符。

echo ${test#*//}

其中 test 是變量名讳癌,# 號是運算符穿稳,*// 表示從左邊開始刪除第一個 // 號及左邊的所有字符

結(jié)果:www.baidu.com/haha.html

2. ## 號截取,刪除左邊字符晌坤,保留右邊字符逢艘。

echo ${test##*/}

##*/ 表示從左邊開始刪除最后(最右邊)一個 / 號及左邊的所有字符

即刪除 http://www.baidu.com/

結(jié)果是 haha.html

3.從右邊第幾個字符開始,及字符的個數(shù)

echo ${test:0-9:4}

其中的 0-9 表示右邊算起第9個字符開始骤菠,4 表示字符的個數(shù)它改。

結(jié)果是:haha

4.右邊第幾個字符開始,一直到結(jié)束商乎。

echo ${test:0-9}

表示從右邊第9個字符開始央拖,一直到結(jié)束。

結(jié)果是:haha.html

5.%號截取鹉戚,刪除右邊字符爬泥,保留左邊字符

echo ${test%/*}

%/* 表示從右邊開始,刪除第一個 / 號及右邊的字符

結(jié)果是:http://www.baidu.com

6. %% 號截取崩瓤,刪除右邊字符袍啡,保留左邊字符

echo ${test%%/*}

%%/* 表示從右邊開始,刪除最后(最左邊)一個 / 號及右邊的字符

結(jié)果是:http:


shell的特殊字符

$# 是傳給腳本的參數(shù)個數(shù)

$0 是腳本本身的名字

$1 是傳遞給該shell腳本的第一個參數(shù)

$2 是傳遞給該shell腳本的第二個參數(shù)

$@ 是傳給腳本的所有參數(shù)的列表

$* 是以一個單字符串顯示所有向腳本傳遞的參數(shù)却桶,與位置變量不同境输,參數(shù)可超過9個

$$ 是腳本運行的當前進程ID號

$? 是顯示最后命令的退出狀態(tài),0表示沒有錯誤颖系,其他表示有錯誤

${!#}輸出最后一個參數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗅剖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嘁扼,更是在濱河造成了極大的恐慌信粮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趁啸,死亡現(xiàn)場離奇詭異强缘,居然都是意外死亡督惰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門旅掂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赏胚,“玉大人,你說我怎么就攤上這事商虐【踉模” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵秘车,是天一觀的道長典勇。 經(jīng)常有香客問我,道長叮趴,這世上最難降的妖魔是什么割笙? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮疫向,結(jié)果婚禮上咳蔚,老公的妹妹穿的比我還像新娘。我一直安慰自己搔驼,他們只是感情好谈火,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舌涨,像睡著了一般糯耍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上囊嘉,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天温技,我揣著相機與錄音,去河邊找鬼扭粱。 笑死舵鳞,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的琢蛤。 我是一名探鬼主播长搀,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼忧侧,長吁一口氣:“原來是場噩夢啊……” “哼止毕!你這毒婦竟也來了植旧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤慕淡,失蹤者是張志新(化名)和其女友劉穎背伴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡傻寂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年息尺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崎逃。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡掷倔,死狀恐怖眉孩,靈堂內(nèi)的尸體忽然破棺而出个绍,到底是詐尸還是另有隱情,我是刑警寧澤浪汪,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布巴柿,位于F島的核電站,受9級特大地震影響死遭,放射性物質(zhì)發(fā)生泄漏广恢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一呀潭、第九天 我趴在偏房一處隱蔽的房頂上張望钉迷。 院中可真熱鬧,春花似錦钠署、人聲如沸糠聪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舰蟆。三九已至,卻和暖如春狸棍,著一層夾襖步出監(jiān)牢的瞬間身害,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工草戈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留塌鸯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓唐片,卻偏偏與公主長得像丙猬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子牵触,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 個人學習批處理的初衷來源于實際工作淮悼;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,718評論 0 11
  • Shell腳本語言學習一Shell腳本語言學習三 Shell腳本語言 echo命令? 顯示普通字符串腳本代碼: ...
    SimpleBK閱讀 443評論 0 1
  • 0.linux啟動的步驟 設(shè)備加電----》BIOS自檢-----》grub引導啟動-----》加載內(nèi)核----》...
    萌面大叔2閱讀 779評論 0 1
  • 基礎(chǔ) 頭文件 #!/bin/bash 或者#!/bin/sh #!約定的標記揽思,如IOS的Import 執(zhí)行文件時需...
    ZMJun閱讀 1,232評論 1 2
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,096評論 0 0