12.9 Linux下shell腳本命令語句學(xué)習(xí)

課堂內(nèi)容

復(fù)習(xí)問題:
printf = "hello,world!"
printf "%s\n" $string
printf "%sn" "hello, world!"
printf "%s\n" hello, world!
printf "%s\n" "${string}"
三種寫法:
$string
${string}
"$string"
printf打印字符串:
若變量值中有空格稳析,則打印時(shí)使用"$變量名"

字符串賦值時(shí)酝润,若值中有空格祟绊,用""括起來
變量名="hello world"
$引用變量楼入,不能夠把" "一起引用哥捕,因此打印時(shí),需用"$變量名"

1.字符串

(1)字符串的拼接
引用字符串的值嘉熊,并將多個(gè)字符串的值作為新的字符串付給新的變量遥赚,即:str="$string1 $string2"
(2)字符串的長度
lenth=${#string}
  • 此時(shí)#不是注釋,表示計(jì)算字符串的長度
(3)字符串的分割
nstr=${string:a:b}
把字符串string從第a個(gè)之后開始截取b個(gè)字符阐肤,賦給新的變量

2.只讀readonly

num=34
echo $num
num=88 #錯(cuò)誤(error)
echo $sum
只讀變量的值無法修改Y旆稹!孕惜!

3.清除變量的值

num=333
echo $num
unset num
echo $num
  • 注意:unset是清除變量的值愧薛。若變量未定義直接使用,其值為空

4.再次強(qiáng)調(diào)

(1)shell程序必須指定腳本的解釋程序
  • 在shell腳本程序的第一行必須是:#!/bin/bash
(2)空格問題
  • 變量賦值時(shí)衫画,=兩邊不可有空格其他情況:盡量加空格

5.權(quán)限問題

sudo chmod a+x filename 所有用戶
sudo chmod u+x,g+x filename 使用者和所在的組
sudo chmod +x filename 所有用戶
sudo chmod 777 filename 所有權(quán)限

6.從鍵盤獲取變量值

read:在沒有輸入時(shí)毫炉,則一直等待輸入、
read 變量1 變量2 變量3(此情況削罩,將輸入的第一個(gè)值賦給變量1瞄勾,第二個(gè)值給變量2,剩余的值全部給變量3)
不建議使用:
read num1 num2 num3...
建議:
read num1
read num2
read numn

7.shell的三大語句

功能型語句弥激、說明型語句进陡、結(jié)構(gòu)分支語句

(1)說明型語句
以#開頭的語句,至行未均為說明型語句微服,說明型語句不解釋執(zhí)行(整行)即注釋
說明型語句的位置可以程序中的任何位置四濒,可以放在解釋執(zhí)行語句之后,從#開始的部分到行末(只能注釋一行)
(2)功能型語句

系統(tǒng)命令职辨,自寫程序....

(3)結(jié)構(gòu)型語句

多露分支語句,循環(huán)語句戈二,循環(huán)控制語句舒裤,測試語句,條件語句觉吭,結(jié)構(gòu)型語句

8.加腾供,減,乘鲜滩,除伴鳖,取余(整數(shù))

expr  let:針對整數(shù)做簡單的加、減徙硅、乘榜聂、除、取余(整數(shù))
expr:
sum=`expr $sum + $sum1`
sum1=`expr $sum \* $sum1`
let:
let sum=num+num1
let sum1=num\*num1

乘法*:\是去掉的元意嗓蘑,告訴我們解釋器這是真的乘法P胨痢匿乃!
:取得結(jié)果集
*
$( ):取得結(jié)果集

9.條件測試語句

test 測試語句
[ 條件測試語句 ]:注意[ ]中的空格!豌汇!

文件測試:
-e file:測試file時(shí)候存在
-d file:ceshifile是否是目錄
-f file:測試file是否是文件
-r file:測試file是否可讀
-w file:測試file是否可寫
-x file:測試file是否可執(zhí)行
算數(shù)比較運(yùn)算符:
-eq:是否
-ne:是否不等
-gt:是否大于
-ge:是否大于等于
-lt:是否小于
-le:是否小于等于
字符串比較:
-z string:string長度是否為零
-n string:若string非零幢炸,為真
string=string1:是否相同
string!=string1:是否不同
邏輯操作符:
&&:邏輯與
事件1 && 事件2:當(dāng)事件1和事件2都為真拒贱,則為真
||:邏輯或
當(dāng)事件1 || 事件2:當(dāng)事件1或事件2為真宛徊,則為真
-a:and
-o:or
常見變量:
$?:命令執(zhí)行后的返回狀態(tài),返回零表示執(zhí)行成功
$*:所有參數(shù)列表
$@:所有參數(shù)列表
$#:傳遞到腳本的參數(shù)個(gè)數(shù)
$0:可執(zhí)行命令本身逻澳,不是位置參數(shù)
$1~$n:分別表示第一個(gè)至第n個(gè)位置參數(shù)
echo -n:不換行輸出!

10.if語句

(1)語法機(jī)構(gòu)
if [ 條件 ]
   then
       命令
fi

或者

if [ 條件 ]
   then 
       命令
elif
    [ 命令 ]
then
     命令
else
     命令
fi

若表達(dá)式為真闸天,則執(zhí)行命令表1中的命令,退出if語句赡盘;否則執(zhí)行命令表2中的語句if

(3)case語句的用法:

test命令測試的條件成立時(shí)号枕,命令返回值為真,否則返回值為假

方式一:
test $name -eq $1
echo $?

方式二:
if test -f $filename
then
   ...
fi

方式三:
if [ -f $filename ]
then
   ...
fi

10.case...esac

多路分支語句case用于多重條件測試陨享,語法結(jié)構(gòu)清晰自然葱淳,語法結(jié)構(gòu)為:
case 字符串變量 in #case語句只能檢測字符串變量

語句結(jié)構(gòu):
模式1)(各模式中可用文件名元字符,以右括號結(jié)束)
      命令表1;;(命令表以單獨(dú)的雙分號行結(jié)束抛姑,退出case語句)
模式2)
      命令表2;;
...
模式n)
      命令表n;;
esac

還可以指定以下字符串集合:
|  多重選擇
?  任意一個(gè)字符
* 任意多個(gè)字符
[ a-z ] a至z之間的任意字符

11.for 循環(huán)

for...do...done

當(dāng)循環(huán)次數(shù)確定時(shí)赞厕,使用for循環(huán)語句來多次執(zhí)行一條或一組命令,循環(huán)體由語句括號do和done來限定定硝。

格式為:
for 變量名 in 值列表
do
    命令
done

變量名以此獲取單詞表中的各個(gè)單詞皿桑,每取一次值,就執(zhí)行一次蔬啡。
循環(huán)體中的命令诲侮,循環(huán)次數(shù)由值列表中的單詞數(shù)確定,命令表中的命令可以是一條箱蟆,也可以是由分號或者換行符分開的多條沟绪。
若單詞表是由命令行上的所有位置的參數(shù)時(shí),可以在for語句中省略“in 單詞表”部分空猜!

方法二:
for(i=0;i<10;++i)

注意:
for循環(huán)值列表可以省略绽慈,默認(rèn)從輸入?yún)?shù)中獲取

12.while

語法結(jié)構(gòu):
while 條件或命令表達(dá)式
do
   命令
done

while語句首先測試其后的命令或者表達(dá)式的值,如果為真辈毯,就執(zhí)行一次坝疼。
循環(huán)體中的命令,然后在測試該命令或表達(dá)式的值谆沃,執(zhí)行循環(huán)體钝凶,直到該命令或表達(dá)式為假時(shí)退出循環(huán)。
while語句的退出狀態(tài)為命令表中被執(zhí)行的最后一條唁影。

13.break和continue

break n(跳出n層)
continue語句則馬上轉(zhuǎn)到最近一層循環(huán)語句的下一輪循環(huán)上腿椎。
continue n(跳轉(zhuǎn)到最近n層循環(huán)語句的下一輪循環(huán)上)桌硫。

課后作業(yè)

作業(yè):(待完成...)

1.使用while循環(huán)實(shí)現(xiàn)九九乘法表
2.for或者while實(shí)現(xiàn)打印等腰三角形,行數(shù)由用戶輸入
3.寫一個(gè)腳本啃炸,判斷給定目錄下的文件屬性
4.預(yù)習(xí)C語言課本前三四五章铆隘,下周進(jìn)入C部分的學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市南用,隨后出現(xiàn)的幾起案子膀钠,更是在濱河造成了極大的恐慌,老刑警劉巖裹虫,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肿嘲,死亡現(xiàn)場離奇詭異,居然都是意外死亡筑公,警方通過查閱死者的電腦和手機(jī)雳窟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匣屡,“玉大人封救,你說我怎么就攤上這事〉纷鳎” “怎么了誉结?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長券躁。 經(jīng)常有香客問我惩坑,道長,這世上最難降的妖魔是什么也拜? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任以舒,我火速辦了婚禮,結(jié)果婚禮上慢哈,老公的妹妹穿的比我還像新娘稀轨。我一直安慰自己,他們只是感情好岸军,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓦侮,像睡著了一般艰赞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肚吏,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天方妖,我揣著相機(jī)與錄音,去河邊找鬼罚攀。 笑死党觅,一個(gè)胖子當(dāng)著我的面吹牛雌澄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杯瞻,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镐牺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了魁莉?” 一聲冷哼從身側(cè)響起睬涧,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎旗唁,沒想到半個(gè)月后畦浓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡检疫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年讶请,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屎媳。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夺溢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出剿牺,到底是詐尸還是另有隱情企垦,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布晒来,位于F島的核電站钞诡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏湃崩。R本人自食惡果不足惜荧降,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望攒读。 院中可真熱鬧朵诫,春花似錦、人聲如沸薄扁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽防泵。三九已至乾蛤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間日缨,已是汗流浹背钱反。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人面哥。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓哎壳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尚卫。 傳聞我的和親對象是個(gè)殘疾皇子归榕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

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

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,161評論 2 33
  • 第一章 馬東是j市第九中學(xué)132班的一名同學(xué),從小無惡不作是個(gè)孩子王焕毫,上小學(xué)時(shí)是學(xué)校的小霸王蹲坷,上中學(xué)時(shí)更是無法無...
    劉更臣閱讀 322評論 0 0
  • 出租屋改造
    小七奇奇閱讀 296評論 0 0
  • 以前,可能根本不會喜歡 bigbang 或許是因?yàn)楝F(xiàn)在的我們跟他們一樣邑飒,發(fā)型亂成一團(tuán)循签,一樣需要用全身的力氣吶喊
    唯i閱讀 142評論 0 0
  • 轉(zhuǎn)眼間,老公離開我半年了疙咸。這半年县匠,我真的覺得不好過,覺得心好痛撒轮。時(shí)常乞旦,眼淚都在眼睛里打轉(zhuǎn)。主內(nèi)的姐妹時(shí)常告訴我說:...
    以斯帖_ae1f閱讀 179評論 0 0