shell中語法句型的使用

1是尔、字符串

(1)字符串的使用

      String=hello

      String1=world

      String2=“hello瞻鹏,shell”

      echo ${string}

      echo ${string1}

      echo ${string2}

(2)字符串的拼接

引用字符串的值尖滚,并將多個(gè)字符串的值作為新的字符串,賦值給新的變量庐氮,即

      Str=“$string1 $string2”

(3)字符串的長度

      Lenth=${#string} //#為統(tǒng)計(jì)變量指向的內(nèi)容字符串?dāng)?shù)量

(3)字符串的分割

                 nstr=${string:a:b}

  //把字符串string從第a個(gè)之后语稠,開始截取b個(gè)字符,賦給   新的變量

2弄砍、只讀變量

            readonly//只讀

      程序
      num=34

      echo $num

      nun=88 #錯(cuò)誤(error)

      echo $num

      // 只讀變量不可更改

3仙畦、清除變量

      unset //清除變量的值

      程序
      num=3

      echo $num

      unset num

      echo $num

   注意:unset是清除變量的值,若變量未定義直接使用音婶,其值為空慨畸。

3、 需強(qiáng)調(diào)的問題

(1) shell腳本程序必須指定腳本的解釋程序桃熄,即在shell腳本程序的第一行必須是:

      1先口、 #!/bin/bash

(2) 空格問題

變量賦值時(shí)瞳收,等號(hào)兩邊不允許有空格碉京。其他情況:盡量加空格

4、 權(quán)限問題

      sudo chmod a+x filename

      sudo chmod u+x,g+x filename

      sudo chmod +x filename

      sudo chmod 777 filename

5螟深、 從鍵盤獲得輸入數(shù)值

      read  變量名

      a)         read:在沒有輸入時(shí)谐宙,則一直等待

      b)               read 變量1 變量2 變量3

此情況,將輸入的第一個(gè)值賦值給變量1界弧,第二個(gè)值賦值給變量2凡蜻,是剩余的值全部給變量3

不建議使用:

      read 變量1  變量2  變量3

建議:

      read 變量1

      read變量2

      read 變量3

6搭综、 shell的三大語句

功能型語句、說明型語句划栓、結(jié)構(gòu)型語句

(1)說明型語句

以#開頭的語句兑巾,至行末均為說明型語句,說明型語句不解釋執(zhí)行忠荞,起注釋作用蒋歌。作用范圍——整行

說明型語句的位置,可以放在程序中的任何位置委煤,可以放在解釋執(zhí)行語句之后堂油,從#開始的部分到行末.

      1、#只能注釋一行

(2)功能型語句

系統(tǒng)命令碧绞,自寫程序……

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

多路分支語句府框,循環(huán)語句,循環(huán)控制語句讥邻,測(cè)試語句迫靖,條件語句

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

加计维、減袜香、乘、除鲫惶、取余(整數(shù))

expr let :針對(duì)整數(shù)做簡單的加、減实抡、乘欠母、除、取余(整數(shù))吆寨。

          expr:
          sum=`expr $num +$num1`

          sum1=`expr $num \* $num`    //  \* 轉(zhuǎn)義字符赏淌,為乘法

          sum=$( expr $num +$num1)

          sum1=$( expr $num \* $num)   //注意字符問題

  
        let:

        let sum=num+num1

        let sum2=num\*num1

9、條件測(cè)試語句

(1)test 測(cè)試語句*****需要測(cè)試******

(2)[ 條件測(cè)試語句]:注意[]的空格W那濉A!

      -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í)行

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

                        -eq   //是否相等

                        -ne  //是否不等

                        -gt  //是否大于

                        -ge  //是否大于等于

                        -lt  //是否小于等于

                        -le  //是否小于等于 

11字符串比較符

          -z string:string長度是否為零

          -n    string:若string非零辣卒,為真

          string=string1:是否相同

          string!=string1:是否不同

12邏輯操作符:

          &&:邏輯與

          事件1
      && 事件2:當(dāng)事件1和事件2都為真掷贾,則為真

          ||:邏輯或

          事件1 || 事件2:當(dāng)事件1或事件2為真,則為真

          -a:and

          -o:or

13常見變量:

          $?:命令執(zhí)行后的返回狀態(tài)荣茫,返回零表示執(zhí)行成功

          $*:所有參數(shù)列表  //

          $@:所有參數(shù)列表  //從外部列表中輸入

          $#:傳遞到腳本的參數(shù)個(gè)數(shù)

          $0:可執(zhí)行命令本身想帅,不是位置參數(shù)

           echo  -n:不換行輸出!

14.If語句

   (1)if  [ 條件]

          then

                        命令

                 fi

          (2)if  [ 條件]

                        then

                                      命令

                        else
                               [ 條件 ]

                               then

                                      命令

                        else

                fi

若表達(dá)式為真啡莉,則執(zhí)行命令表1中的命令港准,退出if語句旨剥;

否則執(zhí)行命令表2中的語句退出if;

?

15.case...esac

多路分支語句case用于多重條件測(cè)試浅缸,語法結(jié)構(gòu)清晰自然轨帜,
語法結(jié)構(gòu)為:

          case 字符串變量in  #case語句只能檢測(cè)字符串變量

                 模式1)  #各模式中可用文件名元字符,以右括號(hào)結(jié)束

                        命令表1

                        ;;#命令表以單獨(dú)的雙分號(hào)行結(jié)束衩椒,退出case語句

                 模式2)

                        命令表2

                        ;;

                 ......

                 模式n)  #模式n常寫為字符*阵谚,表示所有其他模式

                        命令表n

                        ;;            #最后一個(gè)雙分號(hào)行可以省略

          esac



   |      多重選擇

   ?   任意一個(gè)字符

   *   任意多個(gè)字符

16烟具、for循環(huán)

          for  值  in   值列表

          do

                        for 值 in 值列表

                        命令

                        done

                        命令

          done

// 三角形

**




方法二:

   for((i=0;i<10;i++))

17. while循環(huán)

語法結(jié)構(gòu):

          while 命令或表達(dá)式
                 do
                        命令表
                 done

while語句首先測(cè)試氣候的命令或者表達(dá)式的值梢什,如果為真,就執(zhí)行一次

循環(huán)體中的命令朝聋,然后在測(cè)試該命令或表達(dá)式的值嗡午, 執(zhí)行循環(huán)體,直到該命令或表達(dá)式為假時(shí)退出循環(huán)冀痕。 while語句的退出狀態(tài)為命令表中被執(zhí)行的最后一條命令的退出狀態(tài)荔睹。

18.break和continue

          break n        #跳出n層

          continue語句則馬上轉(zhuǎn)到最近一層循環(huán)語句的下一輪循環(huán)上。

          continue n #跳轉(zhuǎn)到最近n層循環(huán)語句的下一輪循環(huán)上言蛇。

總結(jié):通過今天的學(xué)習(xí)僻他,在shell編輯簡單腳本程序,已經(jīng)達(dá)到理論的要求腊尚,基本操作無技術(shù)障礙吨拗,但是命令不熟練,以及格式要求等需要多練習(xí)

關(guān)差措施:加強(qiáng)練習(xí)婿斥,計(jì)劃在周末多練習(xí)一些例子劝篷,加強(qiáng)熟練程度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末民宿,一起剝皮案震驚了整個(gè)濱河市娇妓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌活鹰,老刑警劉巖哈恰,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異志群,居然都是意外死亡着绷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門赖舟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓬戚,“玉大人,你說我怎么就攤上這事宾抓∽愉觯” “怎么了豫喧?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長幢泼。 經(jīng)常有香客問我紧显,道長,這世上最難降的妖魔是什么缕棵? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任孵班,我火速辦了婚禮,結(jié)果婚禮上招驴,老公的妹妹穿的比我還像新娘篙程。我一直安慰自己,他們只是感情好别厘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布虱饿。 她就那樣靜靜地躺著,像睡著了一般触趴。 火紅的嫁衣襯著肌膚如雪氮发。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天冗懦,我揣著相機(jī)與錄音爽冕,去河邊找鬼。 笑死披蕉,一個(gè)胖子當(dāng)著我的面吹牛颈畸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嚣艇,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼承冰,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了食零?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤寂屏,失蹤者是張志新(化名)和其女友劉穎贰谣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迁霎,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吱抚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了考廉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秘豹。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖昌粤,靈堂內(nèi)的尸體忽然破棺而出既绕,到底是詐尸還是另有隱情啄刹,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布凄贩,位于F島的核電站誓军,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏疲扎。R本人自食惡果不足惜昵时,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椒丧。 院中可真熱鬧壹甥,春花似錦、人聲如沸壶熏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽久橙。三九已至俄占,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淆衷,已是汗流浹背缸榄。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祝拯,地道東北人甚带。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像佳头,于是被迫代替她去往敵國和親鹰贵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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