Shell 中需要注意的地方

1、chmod +x file加上執(zhí)行權(quán)限罢缸,否則會提示無執(zhí)行權(quán)限。

2沼侣、注意執(zhí)行腳本時候或者全目錄祖能,或者./file.sh,如果不加的話蛾洛,linux 默認會從PATH 里去找該 file.sh养铸。

3、定義變量時轧膘,變量名不加美元符號($钞螟,PHP語言中變量需要),如:your_name="runoob.com"

注意谎碍,變量名和等號之間不能有空格鳞滨。

4、使用一個定義過的變量蟆淀,只要在變量名前面加美元符號即可拯啦,如:your_name="qinjx"

echo $your_name

echo ${your_name}

變量名外面的花括號是可選的,加不加都行熔任,加花括號是為了幫助解釋器識別變量的邊界褒链;推薦給所有變量加上花括號,這是個好的編程習(xí)慣疑苔。

5甫匹、字符串是shell編程中最常用最有用的數(shù)據(jù)類型(除了數(shù)字和字符串,也沒啥其它類型好用了),字符串可以用單引號兵迅,也可以用雙引號抢韭,也可以不用引號。單雙引號的區(qū)別跟PHP類似恍箭。

單引號 str='this is a string'

單引號字符串的限制:

單引號里的任何字符都會原樣輸出刻恭,單引號字符串中的變量是無效的;

單引號字串中不能出現(xiàn)單引號(對單引號使用轉(zhuǎn)義符后也不行)季惯。

雙引號 your_name='qinjx'

str="Hello, I know your are \"$your_name\"! \n"

雙引號的優(yōu)點:

雙引號里可以有變量吠各;雙引號里可以出現(xiàn)轉(zhuǎn)義字符

6、獲取字符串長度 string="abcd"

echo ${#string}#輸出 4

7勉抓、在Shell中,用括號來表示數(shù)組候学,數(shù)組元素用"空格"符號分割開藕筋。定義數(shù)組的一般形式為:

數(shù)組名=(值1值2...值n)??可以不使用連續(xù)的下標,而且下標的范圍沒有限制梳码。使用@或者*符號可以獲取數(shù)組中的所有元素隐圾,例如:echo ${array_name[@]} 。Bash Shell 只支持一維數(shù)組(不支持多維數(shù)組)掰茶,初始化時不需要定義數(shù)組大小

8暇藏、以"#"開頭的行就是注釋,會被解釋器忽略濒蒋。sh里沒有多行注釋盐碱,只能每一行加一個#號。如果在開發(fā)過程中沪伙,遇到大段的代碼需要臨時注釋起來瓮顽,過一會兒又取消注釋,怎么辦呢围橡?每一行加個#符號太費力了暖混,可以把這一段要注釋的代碼用一對花括號括起來,定義成一個函數(shù)翁授,沒有地方調(diào)用這個函數(shù)拣播,這塊代碼就不會執(zhí)行,達到了和注釋一樣的效果收擦。

8贮配、我們可以在執(zhí)行 Shell 腳本時,向腳本傳遞參數(shù)炬守,腳本內(nèi)獲取參數(shù)的格式為:$n牧嫉。n代表一個數(shù)字,1 為執(zhí)行腳本的第一個參數(shù),2 為執(zhí)行腳本的第二個參數(shù)酣藻,以此類推……$0為執(zhí)行的文件名曹洽;

9、原生bash不支持簡單的數(shù)學(xué)運算辽剧,但是可以通過其他命令來實現(xiàn)送淆,例如 awk 和 expr,expr 最常用怕轿。expr 是一款表達式計算工具偷崩,使用它能完成表達式的求值操作。例如撞羽,兩個數(shù)相加(注意使用的是反引號 ` 而不是單引號 '):

#!/bin/bash

val=`expr 2 + 2`

echo"兩數(shù)之和為 : $val"

兩點注意:

表達式和運算符之間要有空格阐斜,例如 2+2 是不對的,必須寫成 2 + 2诀紊,這與我們熟悉的大多數(shù)編程語言不一樣谒出。

完整的表達式要被 ` ` 包含,注意這個字符不是常用的單引號邻奠,在 Esc 鍵下邊笤喳。

乘號(*)前邊必須加反斜杠(\)才能實現(xiàn)乘法運算;

10碌宴、

關(guān)系運算符只支持數(shù)字杀狡,不支持字符串,除非字符串的值是數(shù)字贰镣。

下表列出了常用的關(guān)系運算符呜象,假定變量 a 為 10,變量 b 為 20:

運算符說明舉例

-eq檢測兩個數(shù)是否相等八孝,相等返回 true董朝。[ $a -eq $b ] 返回?false。

-ne檢測兩個數(shù)是否相等干跛,不相等返回 true子姜。[ $a -ne $b ] 返回 true。

-gt檢測左邊的數(shù)是否大于右邊的楼入,如果是哥捕,則返回 true。[ $a -gt $b ] 返回 false嘉熊。

-lt檢測左邊的數(shù)是否小于右邊的遥赚,如果是,則返回 true阐肤。[ $a -lt $b ] 返回 true凫佛。

-ge檢測左邊的數(shù)是否大于等于右邊的讲坎,如果是,則返回 true愧薛。[ $a -ge $b ] 返回 false晨炕。

-le檢測左邊的數(shù)是否小于等于右邊的,如果是毫炉,則返回 true瓮栗。[ $a -le $b ] 返回 true。

EQ 就是 EQUAL等于

NQ 就是 NOT EQUAL不等于

GT 就是 GREATER THAN大于

LT 就是 LESS THAN小于

GE 就是 GREATER THAN OR EQUAL 大于等于

LE 就是 LESS THAN OR EQUAL 小于等于

11瞄勾、echo`date`

注意:這里使用的是反引號`, 而不是單引號'费奸。結(jié)果將顯示當前日期

12、%d %s %c %f格式替代符詳解:

d: Decimal 十進制整數(shù)-- 對應(yīng)位置參數(shù)必須是十進制整數(shù)进陡,否則報錯愿阐!

s: String 字符串-- 對應(yīng)位置參數(shù)必須是字符串或者字符型,否則報錯四濒!

c: Char 字符-- 對應(yīng)位置參數(shù)必須是字符串或者字符型换况,否則報錯!

f: Float 浮點-- 對應(yīng)位置參數(shù)必須是數(shù)字型盗蟆,否則報錯!

如:其中最后一個參數(shù)是 "def"舒裤,%c 自動截取字符串的第一個字符作為結(jié)果輸出喳资。

$? printf? "%d %s %c\n"? 1 "abc" "def"?

1? abc d

13、代碼中的 [] 執(zhí)行基本的算數(shù)運算腾供,如:

#!/bin/bash

a=5

b=6

result=$[a+b]# 注意等號兩邊不能有空格echo"result 為: $result"

14仆邓、和Java、PHP等語言不一樣伴鳖,sh的流程控制不可為空节值,如果else分支沒有語句執(zhí)行,就不要寫這個else榜聂。if 語句語法格式:

if condition

then

command1

command2...

commandN

fi

末尾的fi就是if倒過來拼寫

15搞疗、case的語法和C family語言差別很大,它需要一個esac(就是case反過來)作為結(jié)束標記须肆,每個case分支用右圓括號匿乃,用兩個分號表示break。

16豌汇、linux shell 可以用戶定義函數(shù)幢炸,然后在shell腳本中可以隨便調(diào)用。

shell中函數(shù)的定義格式如下:

[function]funname[()]{action;[returnint;]}

說明:

1拒贱、可以帶function fun() 定義宛徊,也可以直接fun() 定義,不帶任何參數(shù)佛嬉。

2、參數(shù)返回闸天,可以顯示加:return 返回暖呕,如果不加,將以最后一條命令運行結(jié)果号枕,作為返回值缰揪。 return后跟數(shù)值n(0-255

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市葱淳,隨后出現(xiàn)的幾起案子钝腺,更是在濱河造成了極大的恐慌,老刑警劉巖赞厕,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艳狐,死亡現(xiàn)場離奇詭異,居然都是意外死亡皿桑,警方通過查閱死者的電腦和手機毫目,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诲侮,“玉大人镀虐,你說我怎么就攤上這事」敌鳎” “怎么了刮便?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绽慈。 經(jīng)常有香客問我恨旱,道長,這世上最難降的妖魔是什么坝疼? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任搜贤,我火速辦了婚禮,結(jié)果婚禮上钝凶,老公的妹妹穿的比我還像新娘仪芒。我一直安慰自己,他們只是感情好腿椎,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布桌硫。 她就那樣靜靜地躺著,像睡著了一般啃炸。 火紅的嫁衣襯著肌膚如雪铆隘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天南用,我揣著相機與錄音膀钠,去河邊找鬼掏湾。 笑死,一個胖子當著我的面吹牛肿嘲,可吹牛的內(nèi)容都是我干的融击。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼雳窟,長吁一口氣:“原來是場噩夢啊……” “哼尊浪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起封救,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤拇涤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后誉结,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹅士,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年惩坑,在試婚紗的時候發(fā)現(xiàn)自己被綠了掉盅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡以舒,死狀恐怖趾痘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔓钟,我是刑警寧澤扼脐,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站奋刽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏艰赞。R本人自食惡果不足惜佣谐,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望方妖。 院中可真熱鬧狭魂,春花似錦、人聲如沸党觅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杯瞻。三九已至镐牺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魁莉,已是汗流浹背睬涧。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工募胃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人畦浓。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓痹束,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讶请。 傳聞我的和親對象是個殘疾皇子祷嘶,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361