Linux基礎(chǔ)shell,無C高級(jí)的預(yù)習(xí)(4)

shell腳本

1平项,字符串的操作
1)若打印時(shí)有空格赫舒,則應(yīng)“$變量名”;
若字符串賦值時(shí)闽瓢,若值中有空格接癌,變量名 = “hello, world扣讼!”應(yīng)用雙引號(hào)括起來缺猛。
2)字符串的長(zhǎng)度
lenth=${#string}

#!bin/bash
string="hello,"
stirng1="shell!"
echo ${#stirng}

#后不是字符串表示的是字符串的長(zhǎng)度。
3)字符串的分割
nstr=${string:a:b}

#!/bin/bash
string="hello,"
string1="shell!"
echo nstr=${string:a:b}
echo nstr1=${string1:a:b}

把字符串string從第a個(gè)之后開始截取b個(gè)字符,把值賦給新的變量
2椭符,只讀readonly

#!/bin/bash
readonly num=7
echo $num
num=66
echo $num```
打印出來會(huì)在第二次賦值時(shí)出錯(cuò)荔燎,兩次打印結(jié)果均為7。(只讀變量不可更改销钝。)
3有咨,清除變量的值

num=333
echo $num
unset num
echo $num```
使變量的值為空
4,注意問題
shell程序必須指定解釋程序的第一行必須是:#!/bin/bash;
賦值時(shí)等號(hào)兩邊不能加空格蒸健。
5座享,read
從鍵盤中獲取數(shù)值

#!/bin/bash
echo "input num:"
read num
echo $num

read:在沒有輸入時(shí),則一直等待輸入
read 變量1 變量2 變量3
此情況不建議使用似忧,需要輸入空格
建議使用:read 變量1
read 變量2
read 變量3

#!/bin/bash
echo "input date:year month day
read year month day
echo "press key to contine:"
read KEY
echo "the date is:$year/$month/$day"

6渣叛,shell的三大語句
說明型語句、功能型語句橡娄、結(jié)構(gòu)分支語句
(1)說明型語句
以#開頭的語句诗箍,至行末均為說明型語句,說明型語句不解釋執(zhí)行(整行)挽唉,即注釋滤祖;
說明型語句的位置可以是程序中的任何位置,可以放在解釋執(zhí)行語句之后瓶籽,從#開始的部分只注釋一行
(2)功能型語句
系統(tǒng)命令匠童,自寫程序....
(3)結(jié)構(gòu)型語句
多路分支語句,循環(huán)語句塑顺,循環(huán)控制語句汤求,測(cè)試語句俏险,條件語句
結(jié)構(gòu)型語句
7,加扬绪、減竖独、乘、除挤牛、取余
乘法要使用轉(zhuǎn)譯字符
expr let:針對(duì)裝束做簡(jiǎn)單的加莹痢、減、乘墓赴、除竞膳、取余

expr:
sum=`expr $num + $num1`
sum1=`expr $num \* $num1`
let:
let sum=num+num1
let sum1=num\*num1```
* 文件比較運(yùn)算符
`-e filename`:如果filename 存在為真
`-d filename`:如果filename 為目錄為真
`-f filename`:如果filename 為常規(guī)文件為真
`-L filename`:如果filename 為符號(hào)鏈接為真
`-r filename`:如果filename 可讀為真
`-w filename`:如果filename 可寫為真
`-x filename`:如果filename 可執(zhí)行為真
`filename1 -nt filename2`:如果filename1比filename2新,則為真
`filename1 -ot filename2`:如果filename1比filename2新诫硕,則為真
* 整數(shù)測(cè)試
`-eq`:相等
`-ne`:不等于
`-gt`:大于
`-ge`:大于等于
`-lt`:小于
`-le`:小于等于
字符串比較:
`-z string`:string長(zhǎng)度為零時(shí)坦辟,為真
`-n string`:string如果長(zhǎng)度非零,為真
`string1=stirng2`
`string1!=string2`
* 邏輯操作符:
`&&`:邏輯與
`事件1 && 事件2`:當(dāng)事件1和事件2都為真章办,則為真
`||`:邏輯與
`事件1||事件2`:當(dāng)事件1或事件2為真锉走,則為真
`-a:and`
`-o:or`

* 常見變量:
`$?`:命令執(zhí)行后返回的狀態(tài),返回0表示成功執(zhí)行纲菌,其他值表明執(zhí)行錯(cuò)誤
`$*`:所有參數(shù)列表
`$@`:所有參數(shù)列表
`$#`:傳遞到腳本的參數(shù)個(gè)數(shù)
`$0`:可執(zhí)行命令本身挠日,不是位置命令參數(shù)
`$1~$n`:分別表示第一至第n個(gè)位置的參數(shù)
`echo -n`:不換行輸出!

if語句
(1)

if [ 條件 ]
then
命令
fi```
(2)

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

case

case 值 in
值1)
命令
;;
值2)
命令;;
值3)
命令;;
esac


for循環(huán)

for 值 in 值列表
do
命令
done

while循環(huán)

while 條件
do
命令
done

###總結(jié)及計(jì)劃:
今天剛剛接觸shell編程翰舌,所以許多東西還要不斷琢磨嚣潜,感覺shell編程以后能提高使用終端的效率,感覺還是蠻重要的椅贱,所以打算明天自習(xí)的時(shí)間好好復(fù)習(xí)懂算,嘗試使用shell編寫一些簡(jiǎn)單的腳本,并且繼續(xù)預(yù)習(xí)C語言高級(jí)的部分庇麦。

###作業(yè):
1计技,使用while循環(huán)實(shí)現(xiàn)九九乘法表

!/bin/bash

for i in 1 2 3 4 5 6 7 8 9
do
for j in 1 2 3 4 5 6 7 8 9
do
sum=expr $i \* $j
printf "$j * $i = $sum "
if [ $j -eq $i ]
then
break;
fi
done
echo
done```
2,for或者while實(shí)現(xiàn)打印等腰三角形山橄,行數(shù)由用戶輸入

#!/bin/bash
echo -n "input a num:"
read num
i=1
while [ $i -le $num ]
do
    j=1
    #let sum=$num-$i
    while [ $j -le $(($num-$i)) ]
    do
        echo -n " "
        let j++
    done
    let sum1=2*$i-1
    j=1
    while [ $j -le $sum1 ]
    do
        echo -n "*"
        let j++
    done
    let i++
    echo

做這道題出現(xiàn)的問題垮媒,對(duì)j的初始化位置未放置正確,導(dǎo)致浪費(fèi)大量時(shí)間調(diào)試航棱,主要原因:對(duì)全局變量和局部變量作用域的理解不夠到位
3睡雇,寫一個(gè)腳本,判斷給定目錄下的文件屬性

#!/bin/bash
echo "Please enter a filename:"
read filename
if [ -e $filename ];then
    if [ -f $filename ];then
        echo "$filename is a 常規(guī)文件"
    elif [ -d $filename ];then
        echo "$filename is a 目錄"
    elif [ -L $filename ];then
        echo "$filename is a 復(fù)航鏈接"
    fi
else
    echo "文件不存在"
fi```
4饮醇,預(yù)習(xí)C語言課本前三四五章它抱,下周進(jìn)入C部分的學(xué)習(xí)
已完成
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朴艰,隨后出現(xiàn)的幾起案子观蓄,更是在濱河造成了極大的恐慌混移,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侮穿,死亡現(xiàn)場(chǎng)離奇詭異歌径,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)亲茅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門沮脖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芯急,你說我怎么就攤上這事∈豢。” “怎么了娶耍?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)饼酿。 經(jīng)常有香客問我榕酒,道長(zhǎng),這世上最難降的妖魔是什么故俐? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任想鹰,我火速辦了婚禮,結(jié)果婚禮上药版,老公的妹妹穿的比我還像新娘辑舷。我一直安慰自己,他們只是感情好槽片,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布何缓。 她就那樣靜靜地躺著,像睡著了一般还栓。 火紅的嫁衣襯著肌膚如雪碌廓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天剩盒,我揣著相機(jī)與錄音谷婆,去河邊找鬼。 笑死辽聊,一個(gè)胖子當(dāng)著我的面吹牛纪挎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播身隐,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼廷区,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了贾铝?” 一聲冷哼從身側(cè)響起隙轻,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤埠帕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后玖绿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敛瓷,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年斑匪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呐籽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚀瘸,死狀恐怖狡蝶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贮勃,我是刑警寧澤贪惹,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站寂嘉,受9級(jí)特大地震影響奏瞬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泉孩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一硼端、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寓搬,春花似錦珍昨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脏嚷,卻和暖如春骆撇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背父叙。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工神郊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人趾唱。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓涌乳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親甜癞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夕晓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法悠咱,內(nèi)部類的語法蒸辆,繼承相關(guān)的語法征炼,異常的語法,線程的語...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • Shell簡(jiǎn)介 Shell會(huì)執(zhí)行用戶輸入的命令躬贡,并且在屏幕上顯示執(zhí)行的結(jié)果谆奥。 單從字面的意思上理解,Shell的本...
    故事狗閱讀 1,738評(píng)論 2 10
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程拂玻,因...
    小菜c閱讀 6,404評(píng)論 0 17
  • day28 《皮囊》 我們的生命本來多輕盈酸些,都是被這肉體和各種欲望的污濁給拖住¢苎粒“肉體是拿來用的魄懂,不是拿來伺候的...
    Molly_zhang閱讀 71評(píng)論 0 0
  • 一 老屋是明清時(shí)的建筑。 四周的墻面是用青磚筑就的闯第,除東面大門處是獨(dú)獨(dú)的一面墻外...
    風(fēng)兒輕輕閱讀 658評(píng)論 7 11