1. 程式人生 > >初識shell【運算符與判斷】

初識shell【運算符與判斷】

初識shell【運算符與判斷】

小白的shell之路

系統版本 Red Hat Enterprise Linux Server release 7.0

            【基礎篇】
                                                      認識shell和基本運算符

 1.什麽是shell腳本:

Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。

   2.查看本機現有解釋器:
cat  /etc/shells

        3.修改用戶的shell解釋器:
  useradd -s /bin/ksh     zhangsan     【創建用戶張三的時候指定登陸shell】
    usermod  -s /bin/ksh   zhangsan     【修改已有用戶張三的登陸shell】

        4.查看歷史命令:
  history
    vim  /etc/profile                       【進入配置文件】
    HISTSIZE=1000                    【可修改默認歷史數量】
    history  -c                                 【清空歷史命令】

           5.歷史命令的應用:
    ![序號]                                    【再次執行該序號的命令】
    !cat                                         【再次執行最近以cat開頭的命令】

             6.重定向標準輸入/輸出/錯誤輸出
             > 將命令執行的正常輸出重定向到文件
             >>:只收集前面命令的正確輸出
         2>:只收集前面命令的錯誤輸出
         &>:前面命令的正確與錯誤輸出
         >&2:將正確的輸出結果變成錯誤的輸出

       運算符:

                     1.expr     【註:數字間有空格】

      [root@server0 ~]# expr 10 % 3  【求10與3的余數】
      1

           2.$[]
     [root@server0 ~]# echo $[5*3]   【求5乘3】
     15

              [root@server0 ~]# x=5            【分別為x和y賦值並求乘積】
      [root@server0 ~]# y=10
      [root@server0 ~]# echo $[x*y]
      50

             3.let                【不顯示結果】

         [root@server0 ~]# x=6
         [root@server0 ~]# y=6
         [root@server0 ~]# let i=x+y
         [root@server0 ~]# echo $i
         12

               簡寫運算:
           [root@server0 ~]# x=5
           [root@server0 ~]# let x++              【為x值加1】
           [root@server0 ~]# echo $x
           6

            [root@server0 ~]# x=5
            [root@server0 ~]# let x+=5           【為x值加5】
            [root@server0 ~]# echo $x
            10
                let x*=5                                             【為x值晨乘5】
                let x/=5                                             【為x值除以5】
                let x%=5                                           【為x值取余】

                4.bc        【計算器】
           5+5
           10

                                5. 取小樹點後x位
            scale=x
                                    取小數點後兩位
             [root@server0 ~]# echo "scale=2;2/10"  | bc
            .20

               6. 比較:test  或    [   參數  =   參數  ]               【括號內一定要有空格】

                             [root@server0 ~]# [ a = a ]
             [root@server0 ~]# echo $?        【判斷是否執行】
             0

                 7.判斷空值 -z
              [root@server0 ~]# [ -z $p ]
              [root@server0 ~]# echo $?
              0
              [root@server0 ~]# p=5
              [root@server0 ~]# [ -z $p ]
              [root@server0 ~]# echo $?
              1

                      1.一行打多條命令
           a && b  僅當a成功時,才執行b
           a || b  僅當a失敗時,才執行b
           a ;  b  執行a,執行b

       示例:
            創建用戶登陸超過兩個郵件報警
            #!/bin/bash
            num=`who | wc -l`
            [ $num -gt 2 ] && mail -s error  root < /root/mail

           編輯郵件內容vim /root/mail

                       2.判斷文件/目錄的狀態
          -e  判斷對象是否存在,存在即為真
          -d  判斷對象是否為目錄,存在即為真
          -f  判斷對象是否為文件,存在即為真

          -r 讀
          -w 寫
         -o 執行本

                  註:root對所有對象皆為真『腳本除外』

          [Moring晨光]#chmod -x who.sh
          [Moring晨光]#ll who.sh
          -rw-r--r--. 1 root root 81 4月  24 11:52 who.sh
          [Moring晨光]#[ -o who.sh ]
          [Moring晨光]#echo $?
          1

           [判斷]  && 命令    存在即執行命令
           [判斷]  ||  命令      不存在即執行命令

               !  取反

            單分支if   只能判斷對
            雙分支if   判斷對和錯
            多分支if   多次判斷

初識shell【運算符與判斷】