Linux shell命令~字符串運(yùn)算符

注意:運(yùn)算符與左右的字符串之間必須用空格隔開巴元,即使左邊沒有字符串如文件測試運(yùn)算符也需要有空格隔開

假定變量a為"abc" b為"def"
  • = 檢測二個(gè)字符串是否相等,相等為true [ $a = $b ] 返回false
  • != 檢測二個(gè)字符串是否相等亩冬,不相等為true
  • -z檢測字符串長度是否為0 為0返回true [ -z $a] 返回false
  • -n檢測字符串長度是否為0 不為0返回true [ -n $a] 返回true
  • str檢測字符串是否為空 不為空返回true [$a]返回true

str=null 說明str沒有指向任何對(duì)象
而str長度為零時(shí)str肯定不為null的,此時(shí)str指向一個(gè)長度為零的字符串

  • -b file 檢測文件是否是塊設(shè)備文件硼身,如果是硅急,則返回 true。 [ -b $file ] 返回 false佳遂。(注意:)

Ctrl+d退出cat命令

不小心vim狀態(tài)下摁了Ctrl+s將vim假鎖以后 摁下Ctrl+q即可解除

使用vim時(shí)营袜,如果你不小心按了 Ctrl + s后,你會(huì)發(fā)現(xiàn)不能輸入任何東西了丑罪,像死掉了一般荚板,其實(shí)vim并沒有死掉,這時(shí)vim只是停止向終端輸出而已吩屹,要想退出這種狀態(tài)跪另,只需按Ctrl + q 即可恢復(fù)正常。

linux echo命令的-n煤搜、-e兩個(gè)參數(shù)

echo -n 不換行輸出
$echo -n "123"
$echo "456"
最終輸出
123456
而不是
123
456
echo -e 處理特殊字符
若字符串中出現(xiàn)以下字符免绿,則特別加以處理,而不會(huì)將它當(dāng)成一般文字輸出:
\a 發(fā)出警告聲擦盾;
\b 刪除前一個(gè)字符嘲驾;
\c 最后不加上換行符號(hào);
\f 換行但光標(biāo)仍舊停留在原來的位置迹卢;
\n 換行且光標(biāo)移至行首辽故;
\r 光標(biāo)移至行首,但不換行腐碱;
\t 插入tab誊垢;
\v 與\f相同;
\ 插入\字符症见;
\nnn 插入nnn(八進(jìn)制)所代表的ASCII字符喂走;
$echo -e "a\bdddd"
dddd
$echo -e "a\adddd" //輸出同時(shí)會(huì)發(fā)出報(bào)警聲音
adddd
$echo -e "a\ndddd" //自動(dòng)換行
a
dddd

'內(nèi)容'單引號(hào)就不進(jìn)行轉(zhuǎn)義,直接原樣輸出

printf命令

%-10s 指一個(gè)寬度為10個(gè)字符(-表示左對(duì)齊筒饰,沒有則表示右對(duì)齊)缴啡,任何字符都會(huì)被顯示在10個(gè)字符寬的字符內(nèi),如果不足則自動(dòng)以空格填充瓷们,超過也會(huì)將內(nèi)容全部顯示出來业栅。

%s %b

注意:在這里%b個(gè)人理解為將要輸入的進(jìn)行轉(zhuǎn)義輸出秒咐,如"A\nB"則輸出A 在對(duì)"\n"進(jìn)行轉(zhuǎn)義(換行) 在輸出B

加法的表示方式

  • 一種錯(cuò)誤的加法表示法

  • 一種正確的加法表示法

可知增加一對(duì)括號(hào)即可

shell 函數(shù)

1、可以帶function fun() 定義碘裕,也可以直接fun() 定義,不帶任何參數(shù)携取。
2、參數(shù)返回帮孔,可以顯示加:return 返回雷滋,如果不加,將以最后一條命令運(yùn)行結(jié)果文兢,作為返回值晤斩。 return后跟數(shù)值n(0-255)

example1:

funWithReturn(){
echo "這個(gè)函數(shù)會(huì)對(duì)輸入的兩個(gè)數(shù)字進(jìn)行相加運(yùn)算..."
echo "輸入第一個(gè)數(shù)字: "
read aNum
echo "輸入第二個(gè)數(shù)字: "
read anotherNum
echo "兩個(gè)數(shù)字分別為 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "輸入的兩個(gè)數(shù)字之和為 $? !"

輸出類似下面:

這個(gè)函數(shù)會(huì)對(duì)輸入的兩個(gè)數(shù)字進(jìn)行相加運(yùn)算...
輸入第一個(gè)數(shù)字:
1
輸入第二個(gè)數(shù)字:
2
兩個(gè)數(shù)字分別為 1 和 2 !
輸入的兩個(gè)數(shù)字之和為 3 !

函數(shù)返回值在調(diào)用該函數(shù)后通過 $? 來獲得。

注意:所有函數(shù)在使用前必須定義姆坚。這意味著必須將函數(shù)放在腳本開始部分澳泵,直至shell解釋器首次發(fā)現(xiàn)它時(shí),才可以使用兼呵。調(diào)用函數(shù)僅使用其函數(shù)名即可兔辅。

函數(shù)參數(shù)
在Shell中,調(diào)用函數(shù)時(shí)可以向其傳遞參數(shù)击喂。在函數(shù)體內(nèi)部维苔,通過 $n 的形式來獲取參數(shù)的值,例如懂昂,$1表示第一個(gè)參數(shù)介时,$2表示第二個(gè)參數(shù)...
帶參數(shù)的函數(shù)示例:
funWithParam(){
echo "第一個(gè)參數(shù)為 $1 !"
echo "第二個(gè)參數(shù)為 $2 !"
echo "第十個(gè)參數(shù)為 $10 !"
echo "第十個(gè)參數(shù)為 ${10} !"
echo "第十一個(gè)參數(shù)為 ${11} !"
echo "參數(shù)總數(shù)有 $# 個(gè)!"
echo "作為一個(gè)字符串輸出所有參數(shù) $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

輸出結(jié)果:

第一個(gè)參數(shù)為 1 !
第二個(gè)參數(shù)為 2 !
第十個(gè)參數(shù)為 10 !
第十個(gè)參數(shù)為 34 !
第十一個(gè)參數(shù)為 73 !
參數(shù)總數(shù)有 11 個(gè)!
作為一個(gè)字符串輸出所有參數(shù) 1 2 3 4 5 6 7 8 9 34 73 !

注意,$10 不能獲取第十個(gè)參數(shù)忍法,獲取第十個(gè)參數(shù)需要${10}潮尝。當(dāng)n>=10時(shí),需要使用${n}來獲取參數(shù)饿序。

另外,還有幾個(gè)特殊字符用來處理參數(shù):

參數(shù)處理 說明
$# 傳遞到腳本的參數(shù)個(gè)數(shù)
$** 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù)*
$$ 腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào)
$! 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的ID號(hào)
$@ 與$*相同羹蚣,但是使用時(shí)加引號(hào)原探,并在引號(hào)中返回每個(gè)參數(shù)。
$- 顯示Shell使用的當(dāng)前選項(xiàng)顽素,與set命令功能相同咽弦。
$? 顯示最后命令的退出狀態(tài)。0表示沒有錯(cuò)誤胁出,其他任何值表明有錯(cuò)誤型型。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市全蝶,隨后出現(xiàn)的幾起案子闹蒜,更是在濱河造成了極大的恐慌寺枉,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绷落,死亡現(xiàn)場離奇詭異姥闪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)砌烁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門筐喳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人函喉,你說我怎么就攤上這事避归。” “怎么了管呵?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵槐脏,是天一觀的道長。 經(jīng)常有香客問我撇寞,道長顿天,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任蔑担,我火速辦了婚禮牌废,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啤握。我一直安慰自己鸟缕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布排抬。 她就那樣靜靜地躺著懂从,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹲蒲。 梳的紋絲不亂的頭發(fā)上番甩,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音届搁,去河邊找鬼缘薛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛卡睦,可吹牛的內(nèi)容都是我干的宴胧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼表锻,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼恕齐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瞬逊,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤显歧,失蹤者是張志新(化名)和其女友劉穎仪或,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體追迟,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溶其,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敦间。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓶逃。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖廓块,靈堂內(nèi)的尸體忽然破棺而出厢绝,到底是詐尸還是另有隱情,我是刑警寧澤带猴,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布昔汉,位于F島的核電站,受9級(jí)特大地震影響拴清,放射性物質(zhì)發(fā)生泄漏靶病。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一口予、第九天 我趴在偏房一處隱蔽的房頂上張望娄周。 院中可真熱鬧,春花似錦沪停、人聲如沸煤辨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽众辨。三九已至,卻和暖如春舷礼,著一層夾襖步出監(jiān)牢的瞬間鹃彻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工且轨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浮声,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓旋奢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親然痊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子至朗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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