腳本語言基本語法

本文參考鏈接:
[1] https://blog.csdn.net/oqqHuTu12345678/article/details/71319006
[2] https://www.cnblogs.com/tongye/p/9707590.html

  • 第一行一般為#!/bin/sh
    以#!開始违寿,/bin/sh指定/bin目錄下的sh可執(zhí)行程序執(zhí)行
    #!/bin/bash(用bash作為解釋器)
    #!/bin/dash(ubuntu中默認(rèn)使用dash)
  • shell不需要編譯袭祟,編輯完直接運(yùn)行
  • 弱類型語言调煎,沒有類型概念
  • 區(qū)分大小寫

變量類型

  • 自定義變量(局部變量)
    一般以小寫字母命名
  • 環(huán)境變量
    一般用大寫字母命名
    export 變量名=變量值 # 創(chuàng)建環(huán)境變量并賦值
  • 位置參數(shù)變量
    向腳本中傳遞參數(shù)或數(shù)據(jù)
  • 預(yù)定義變量
    bash中定義好的變量蔫磨,包含位置參數(shù)變量和$?(保存最后一次執(zhí)行的命令的返回狀態(tài)。如果 $? 的值為 0 主穗,則表明上一個(gè)命令成功執(zhí)行泻拦;如果值非 0 ,則表明上一個(gè)命令沒有成功執(zhí)行忽媒。)和$!(用于保存后運(yùn)行的最后一個(gè)進(jìn)程的 PID 號争拐。)

賦值

  • 賦值語句=兩邊不能有空格
  • 新的變量賦值會(huì)覆蓋老的賦值

引用

  • 用$符號引用變量(變量解釋引用符)
    如果未查詢到,賦值為一個(gè)新的空變量
    ${var}

刪除

  • 刪除變量 unset var

輸出

  • 輸出 echo ‘content’
  • 在bash環(huán)境下晦雨,感嘆號只能通過單引號包圍來輸出
    \# echo Hello World! 可以
    \# echo 'Hello World!' 可以
    \# echo “Hello World!” 不可以會(huì)報(bào)錯(cuò)
    雙引號里面可以有變量架曹,可以出現(xiàn)轉(zhuǎn)義字符
    • $加變量名-取變量的值
    • \轉(zhuǎn)義字符 \$ \' \" \\

條件循環(huán)

  • if語句
if[表達(dá)式]
then  
  xxx
else
  yyy
fi

if[表達(dá)式]
then 
  xxx
elif [表達(dá)式]
then 
  yyy
else
  zzz
fi
  • for循環(huán)
for b變量 in 列表
do
  command1
  command2
  ···
done
  • while循環(huán)
while command
do
  Statement(s) to be excuted if command is true
done
#例子
COUNTER=0
while [ $COUNTER -lt 5 ]
do
    COUNTER=’expr $COUNTER+1‘
   echo $COUNTER
done
#讀取鍵盤信息輸入信息為FILM,按<ctrl-D>結(jié)束循環(huán)
echo 'type <Ctrl-D> to terminate'
echo -n 'enter your most liked film:'
while read FILM
do
  echo "Yeah! great film the $FILM"
done 
  • case語句
    shell中的case默認(rèn)就是匹配上哪個(gè)執(zhí)行哪個(gè)闹瞧,不會(huì)執(zhí)行完其中一個(gè)后繼續(xù)執(zhí)行后面的其他case绑雄。
case $aNum in 
  1) echo '1'
  ;;
  2) echo '2'
  ;;
  *) echo 'you do not select a number between 1 and 2'
  ;;
esac
  • break語句
    嵌套循環(huán)中break后可以跟一個(gè)整數(shù)表明跳出第幾層循環(huán)

文件測試

  • test -e 如果文件存在則為真,一般與if同用

重定向至文件/追加輸入文件

  • > 這個(gè)符號
    echo ”it is a test“ > myfile

運(yùn)算符

算術(shù)運(yùn)算符

  • expr $a + $b
  • +;-;*;/;%;=
  • 條件表達(dá)式==和!=要放在方括號之內(nèi)奥邮,并且要有空格
    [ $a == $b ]
#!/bin/bash

a=2
b=3
c=`expr $a + $b`

echo $c
exit 0

這段代碼的輸出結(jié)果是:5 万牺。注意使用 expr 命令的那一行,使用的是反引號 `` 洽腺,反引號中的內(nèi)容會(huì)被優(yōu)先執(zhí)行脚粟,所以這一行代碼的作用是將 expr a +b 這一表達(dá)式的執(zhí)行結(jié)果賦給變量 c 。

  • 使用 (( ... )) 的方式對算術(shù)表達(dá)式求值 ```echo((a +b))```

關(guān)系運(yùn)算符

  • -eq equal 是否相等
  • -ne not equal 是否不等
  • -gt greater than 左邊是否大于右邊
  • -lt less than
  • -ge greater equal 左邊是否大于等于右邊
  • -le less equal 左邊是否小于等于右邊

布爾運(yùn)算符

  • ! 非
  • -o 或
  • -a 與

字符串運(yùn)算符

  • = 兩字符串是否相等
  • != 兩字符串是否不等
  • -z 字符串長度是否為0
  • -n 字符串長度是否不為0蘸朋,不為0返回true
  • str 檢測字符串是否為空核无,不為空返回true
    [$a]返回true

文件測試運(yùn)算符

  • -b file 文件是否為塊設(shè)備文件
  • -c file 文件是否是字符設(shè)備文件
  • -d file 文件是否是目錄
  • -f file 文件是否是普通文件(不是設(shè)備文件或者目錄文件)
  • -g file 文件是否設(shè)置了SGID位(Set User ID, SGID 是 Set Group ID的意思。運(yùn)行者將具有文件所有組的權(quán)限藕坯。)
  • -u file 文件是否設(shè)置了SUID位(SUID讓本來沒有相應(yīng)權(quán)限的用戶運(yùn)行這個(gè)程序時(shí)团南,可以訪問他沒有權(quán)限訪問的資源噪沙。文件的該位被設(shè)置為1,在該文件被執(zhí)行時(shí)已慢,該文件將以所有者的身份運(yùn)行曲聂,也就是說無論誰來執(zhí)行這個(gè)文件霹购,他都有文件所有者的特權(quán)佑惠,如果所有者是root的話,那么執(zhí)行人就有超級用戶的特權(quán)了齐疙,這是該位將變成一個(gè)安全漏洞膜楷,因此不要輕易設(shè)置該位。)
  • -k file 文件是否設(shè)置了粘著位(Sticky Bit)
  • -p file 文件是否是具名管道
  • -r file 文件是否可讀
  • -w file 文件是否可寫
  • -x file 文件是否可執(zhí)行
  • -s file 文件是否為空
  • -e file 文件(包括目錄)是否存在

文件包含

  • shall中包含腳本
    . filename(.和文件名中間有一個(gè)空格)或者source filename
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贞奋,一起剝皮案震驚了整個(gè)濱河市赌厅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轿塔,老刑警劉巖特愿,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異勾缭,居然都是意外死亡揍障,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門俩由,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毒嫡,“玉大人,你說我怎么就攤上這事幻梯《祷” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵碘梢,是天一觀的道長咬摇。 經(jīng)常有香客問我,道長煞躬,這世上最難降的妖魔是什么菲嘴? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮汰翠,結(jié)果婚禮上龄坪,老公的妹妹穿的比我還像新娘。我一直安慰自己复唤,他們只是感情好健田,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佛纫,像睡著了一般妓局。 火紅的嫁衣襯著肌膚如雪总放。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天好爬,我揣著相機(jī)與錄音局雄,去河邊找鬼。 笑死存炮,一個(gè)胖子當(dāng)著我的面吹牛炬搭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穆桂,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼宫盔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了享完?” 一聲冷哼從身側(cè)響起灼芭,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎般又,沒想到半個(gè)月后彼绷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茴迁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年寄悯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笋熬。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡热某,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胳螟,到底是詐尸還是另有隱情昔馋,我是刑警寧澤糖耸,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站邦危,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏倦蚪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一边苹、第九天 我趴在偏房一處隱蔽的房頂上張望陵且。 院中可真熱鬧,春花似錦个束、人聲如沸慕购。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沪悲。三九已至获洲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間殿如,已是汗流浹背贡珊。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留握截,地道東北人飞崖。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓烂叔,卻偏偏與公主長得像谨胞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蒜鸡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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

  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多胯努,請查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,090評論 1 19
  • 一逢防、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 5,744評論 0 10
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,380評論 0 5
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,095評論 0 0
  • 早上我是被餓醒的叶沛,昨天晚上只喝的稀飯,這會(huì)早消化的無影無蹤了忘朝。我一動(dòng)睿睿就醒了,我說睿睿我很餓怎么辦溉箕?睿睿說媽媽你...
    a晟睿閱讀 207評論 0 1