培訓(xùn)第四天----shell字符串,語法語句

一朴皆、昨日回顧:

遺留問題:

#!/bin/bash
tring=“Hello,World!”
printf "%s\n" $string             
printf "%s" "Hello,World!"      
echo “================”
printf "%s" Hello,World        
printf "%s\n" “$string”

printf打印字符串:若變量值中有空格帕识,則打印時(shí)應(yīng)使用 "$變量名"。
字符串賦值時(shí)遂铡,若值中有空格肮疗,用 “” 括起來。
$引用變量不能吧“”一起引用扒接,因此打印時(shí)族吻,需用“$變量名”。

三種寫法:

    $string      ${string}       "$string"

二珠增、今日內(nèi)容

1.字符串
(1)字符串的拼接

     str="$string $string1"

引用字符串的值超歌,并將多個(gè)字符串的值作為新的字符串賦給新變量。
#!/bin/bash
#字符串的拼接
string1="hello"
string2="Shell!"
str="$string1 $string2"

    echo $string1 
    echo $string2 
    echo "$str"

(2)字符串的長度

    lenth=${#string}

注意此時(shí)的#不再是注釋蒂教,表示字符串的長度巍举。

    #(接上個(gè)程序)字符串的長度
    lenth1=${#string1}
    lenth2=${#string2}
    lenth3=${#str}

    echo "$string1 :" lenth1
    echo "$string2 :" lenth2
    echo "$str:" lenth3

(3)字符串的分割

          nstr=${string:a:b}

從字符串string的第a個(gè)字符后開始截取b個(gè)字符,附給新的變量nstr凝垛。

    #(接上個(gè)程序)字符串的分割
    nstr1=${string1:1:2}
    nstr2=${string2:2:1}
    nstr3=${str:4:5}

    printf "nstr1:%\n"  "$nstr1"
    printf "nstr2:%\n"  "$nstr2"
    printf "nstr3:%\n"  "$nstr3"

2.只讀:readonly

    readonly num=34
    echo $num
    num=88 #錯(cuò)誤{error}
    echo $num       //只讀變量的值不可更改0妹酢!梦皮!

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 read.sh         //所有用戶
    sudo chmod u+x,g+x read.sh   //擁有者和同組用戶,用 “而账,”隔開
    sudo chmod +x read.sh         //所有用戶    
    sudo chmod 777 read.sh      //所有用戶所有權(quán)限

**6.從鍵盤獲取變量值 **
read:在沒有輸入時(shí)胰坟,則等待輸入

     read 變量1 變量2 變量3   //輸入時(shí),同樣輸空格隔開變量

獲取一個(gè)值給變量泞辐,(動(dòng)態(tài)決定數(shù)據(jù)類型)笔横,
將輸入的第一個(gè)值賦給變量1,第二個(gè)值賦給變量2咐吼,以此類推狠裹,
剩余的值全部賦給最后一個(gè)變量。
不建議多個(gè)變量使用一個(gè)read汽烦,read num1 num2 num3 ....
建議一次read一個(gè)變量莉御。

    read num1
    read num2 
    read num3

7.Shell的三大語句
功能型語句撇吞、說明性語句、結(jié)構(gòu)分支語句
(1)說明型語句
以#開頭的語句礁叔,至行末均為說明性語句牍颈,說明型語句不解釋執(zhí)行(整行),即注釋琅关。
說明型語句的位置可以在程序中的任意位置煮岁,可以放在解釋執(zhí)行語句之后,從#開始的部分到行末涣易,只能注釋一行画机。
(2)功能型語句
系統(tǒng)命令,自寫程序....
(3)結(jié)構(gòu)型語句
多路分支語句新症,循環(huán)語句步氏,循環(huán)控制語句,測(cè)試語句徒爹,條件語句

8.加荚醒、減、乘隆嗅、除界阁、取余(整數(shù))
expr let:針對(duì)整數(shù)做簡(jiǎn)單的運(yùn)算

    sum1=`expr $num1 + $num2`       //必須要有空格
    sum2=`expr $num1 \* $num2`    //取得結(jié)果集,
    
    sum1=$(expr $num1 + $num2)  
    sum2=$(expr $num1 \* $num2)  //同上
    
    let sum1=num1+num2
    let sum2=num1\*num2  //乘法\*,\轉(zhuǎn)義字符為去掉*的元意,告訴解釋器這真的是乘法胖喳!
    
    ``:取得結(jié)果集
    $():取得結(jié)果集           //兩者的執(zhí)行效果相同
    
          -n是echo不換行輸出  

9.條件測(cè)試語句
(1)test 測(cè)試語句
(2)[ 條件測(cè)試語句 ]: //注意[] 中的空格E萸!!
文件比較運(yùn)算符:

    -e file:測(cè)試file是否存在
    -d file:測(cè)試file是否是目錄
    -f file:測(cè)試file是否是文件
    -r file:測(cè)試file是否可讀
    -w file:測(cè)試file是否可寫
    -x file:測(cè)試file是否可執(zhí)行

算術(shù)比較運(yùn)算符:

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

字符串比較:

    -z string:string長度是否為零
    -n string:若string非零精续,為真
    string=string1:是否相同
    string!=string1:是否不同

邏輯操作符:

    &&:邏輯與
    事件1 && 事件2      //當(dāng)事件1和事件2都為真坝锰,則為真
    ||:邏輯或
    事件1 || 事件2      //當(dāng)事件1或事件2為真,則為真
    -a:and
    -o:or

常見變量:

    $?:命令執(zhí)行后的返回狀態(tài)重付,返回零表示執(zhí)行成功
    $*:所有參數(shù)列表
        $@:所有參數(shù)列表
    $#:傳遞到腳本的參數(shù)個(gè)數(shù)
    $0:可執(zhí)行命令本身顷级,不是位置參數(shù)

10.if語句

    (1)if [ 條件 ]
            then
            命令
         fi
    (2)if [ 條件 ]
        then
         命令
            elif [ 條件 ]
                 then
                 命令
         else
         命令
         fi
**//參數(shù)后面可以跟路徑**
**//在終端可運(yùn)行的命令,在Shell腳本下都可運(yùn)行**

11.case語句

    case 值 in
    值1)     
            命令
            ;确垫;

    值2)     
            命令
            弓颈;;
            
    *)          
            命令
            删掀;翔冀;
    esac

其中:

|    //多重選擇
?   //任意一個(gè)字符
*    //代表多個(gè)字符
[a-z]   //a至z間的任意字符披泪? 左閉右開

12.for循環(huán)

    (1)for 值 in 列表
         do
        命令
         done
    (2)for 值 in 列表
         do
        for 值 in 列表
        do
            命令
        done
         done
    方法二:            //for循環(huán)值列表可以省略纤子,從
    for((i=1;i<9;i++))
    do
    echo "j"
    done

13.while循環(huán)

    while [ 條件 ]
    do
         命令
    done               

老師上課給出的vi實(shí)例:

把輸入的字母分類,只要小寫拉丁字母可歸檔款票,其他的包括大寫拉丁字母都不在歸檔范圍內(nèi)控硼。
#!/bin/bash
echo -n "input string1:"
read string1
case $string1 in
[a-g]) echo "$string1 in form a to g"
;;
[h-r]) echo "$string1 in from h to r"
;;
[s-z]) echo "$string1 in from s to z"
;;
*) echo "$string1 out of the rang! "
;;
esac
但是運(yùn)行結(jié)果是部分大寫字母G,R艾少,Z依然能歸檔卡乾。
(to be continued...)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缚够,隨后出現(xiàn)的幾起案子幔妨,更是在濱河造成了極大的恐慌,老刑警劉巖谍椅,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件误堡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡雏吭,警方通過查閱死者的電腦和手機(jī)埂伦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來思恐,“玉大人沾谜,你說我怎么就攤上這事≌陀ǎ” “怎么了基跑?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長描焰。 經(jīng)常有香客問我媳否,道長栅螟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任篱竭,我火速辦了婚禮力图,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掺逼。我一直安慰自己吃媒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布吕喘。 她就那樣靜靜地躺著赘那,像睡著了一般。 火紅的嫁衣襯著肌膚如雪氯质。 梳的紋絲不亂的頭發(fā)上募舟,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音闻察,去河邊找鬼拱礁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辕漂,可吹牛的內(nèi)容都是我干的呢灶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼钮热,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了烛芬?” 一聲冷哼從身側(cè)響起隧期,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赘娄,沒想到半個(gè)月后仆潮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遣臼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年性置,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揍堰。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹏浅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屏歹,到底是詐尸還是另有隱情隐砸,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布蝙眶,位于F島的核電站季希,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜式塌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一博敬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峰尝,春花似錦偏窝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至劳淆,卻和暖如春链沼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沛鸵。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工括勺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曲掰。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓疾捍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栏妖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乱豆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • FreeCodeCamp - Basic JavaScript 寫在前面: 我曾經(jīng)在進(jìn)谷前刷過這一套題,不過當(dāng)時(shí)只...
    付林恒閱讀 16,445評(píng)論 5 28
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,237評(píng)論 0 4
  • 20161201晨讀《自控力》吊趾,不禁會(huì)心一笑…… 比如: (一)意志力第一法則:認(rèn)識(shí)你自己 不管是加入貓群還是讀寫...
    寒璐閱讀 249評(píng)論 0 0
  • 這是很久以前的故事了宛裕。 這個(gè)故事從一只烏龜開始。那一天论泛,太陽很燦爛揩尸,地球在這個(gè)時(shí)期里四季如春,茂密的蕨類植物鋪滿了...
    紅曲轅閱讀 679評(píng)論 0 0
  • 雨,在眼前飄過坟瓢,斜斜地打在身上勇边,落在挽起的衣袖間,鞋子上折联,噼噼啪啪粥诫,點(diǎn)點(diǎn)濕潤。傘下崭庸,灰色的長罩衫怀浆,在風(fēng)中飄揚(yáng)谊囚。左腳...
    左岸花開2020閱讀 467評(píng)論 0 0