kxbin
          成功留給有準備的人
          posts - 10,  comments - 35,  trackbacks - 0
          1.shell算術運算
             可以使用shell結構來執行簡單的整數運算。只需將特定的算術表達式用"$(("和"))"括起。
           echo $((100/3))
           myvar="56" echo $(($myvar + 12))
          也可以使用expr表達式 
           a=100 echo `expr $a \* $a`
          2.應用字符串變量時最好把雙引號加上。
          3.條件判斷
           if [ condition ]; then
               action
           fi
           注意:
           在[]中,只能有一個判斷式;
           在[]與[]之間,可以使用&& 或|| 組合。
          4. declare -i 聲明一個整形變量。
          5.fc -l 
             列出登錄主機之后,最近執行過得指令。
          6.find用法
            find . -name '*.txt' -exec rm -f {} \;
           由當前目錄開始往下查詢擴展名是.txt的文件,找到之后,執行-exec刪除文件的指令,{}表示找到的文件,;表示執行指令-exec的終止符號。
          7.basename
              取得路徑名稱中最后的文件名部分。
          8.dirname
              取得二路徑名稱中的目錄部分。
          9.${變量:位置起點:長度}和${變量:位置起點}
             由指定位置開始,截取指定長度的子字符串。
             filename="/etc/apache2"
             substr=${filename:1:3},從第二個開始截取三個字串。etc
          10.${@:起點}和${@:起點:個數}
               由起點開始,取得后面所有的位置參數。
               ${@:1}
              ./poz.sh 88 77 66 99
              88 77 66 99
          11.計算字符串長度
                ${#變量名稱},返回變量值的字符串長度
               filename="/usr/sbin/ntpdate"
               echo ${#filename} ,長度17
          12、算術運算
          序號     名稱                  語法                      范例
          1        算數擴展              $((算術式))               r=$((2+5*8)) 
          2        使用外部程序expr      expr 算數式               r=`expr 4 + 5`
          3        使用$[]               $[算術式]                 r=$[4 +5 ]   
          4        使用內置命令declare   declare -i  變量=算術式   declare -i r=8+16

          5        使用內置命令let       let 算術式                let r=8+16

          13、條件測試的寫法
              執行某一個命令的結果,執行成功則返回0,為真;執行失敗則返回非0,為假;
              傳回某一個命令執行結果的相反值. ! 命令;
              使用復合命令((算式)) eg:((0))表示假;((1))表示真;((-1))表示真
              使用Bash關鍵字'[['、']]'組成的式子:[[ 判斷式 ]] if [[ str > xyz ]] ; 判斷str字符串和xyz字符串的大小 
              使用內置命令:test 判斷式,真值傳回0,假值傳回1.
              使用內置命令:[判斷式]
          14.case
              case語法
               case 待測項 in
                  樣式串行1) 命令區域1;;
                  樣式串行2) 命令區域2;;
                  ......
                  *) 命令區域;;
               esac
          15. for 語法
               
                for 變量 in 串行
                do 
                      命令區域
               done
             
                for((初始條件;終止條件;異動項))
                 do
                      命令區域
                done
              
                無窮循環
                for((;1;))
                 do
                     命令區域
                done
          16、while語法
                 while  條件測試
                  do 
                     命令區域
                 done
               
               IFS=':'
               while read f1 f2 f3 f4 f5 f6 f7
                do
                  echo "賬號:$f1,login shell 是: $f7 "
                done < "/etc/passwd"
          17、until 循環 如果循環為假,則執行,否則不執行
                until 條件測試
                 do 
                   命令區域
                done
          18、select ,建立一個列表。列表的選項,即串行中的各個字符。
                 select 選項變量 in 串行
                  do 
                     命令區域
                 done
                 注意:列表提示符號由Bash的內置標量PS3定義,默認值是#?,可以改變PS3的值。select會給各個選項一個編號,編號由1開始遞增,當使用者鍵入編號,選擇其中某一選項時,該選項的內容就設置給選項變量,而鍵入的編號值則放入REPLY變量中。
          19、函數語法
                 語法1
                   function 函數名稱()
                    {
                       命令區域
                      } 
                語法2
                  函數名稱(){命令區域}
                語法3 如果使用關鍵詞function,那么,函數名稱后面的小括號可以省略
                  function 函數名稱
                  {
                   命令區域
                   }
            函數調用
              函數名稱
             函數名稱 參數1 參數2 參數3 ....
          20、sed 是一種非交互式的流編輯奇,可動態編輯文件。用法如下:sed '樣式命令' 文件
                 1)刪除某一段范圍的數據行。
                      sed '1,4d' datafile1 , 把第1到第4行數據刪除,剩余的顯示出來,d是sed的刪除命令
                 2)把含有“樣式”的數據行刪除。
                      sed '/La/d' datafile,把含有La的行刪除,剩下的顯示出來。其中,//代表搜索之意。
                      sed '/^$/d' datafile,刪除datafile的空白行。
                      sed '/[0-9]\{3\}/d' datafile,把含有“3位數”的行刪除,剩下的顯示出來。
                 3)把不含有“樣式”的數據行刪除
                      sed '/La/!d' datefile3,把不含有La的行刪除,剩下的顯示出來。
                 4)把含有“樣式”的數據行顯示出來。
                      sed '/La/p' datafile,把含有La的行顯示出來。p是sed的命令,它會把目前的數據顯示出來,但因為sed默認也會顯示不符合的數據行,修改如下:sed -n '/La/p' datafile。選項-n會抑制sed顯示出其它資料行的默認操作,只顯示符合樣式的數據行。
                 5)取代
                      sed -n 's/La/Oo/p' datafile s是取代的意思,第一對//中含括的字符串La是搜索的目標,第二對//含括的是置換的字符串Oo。把數據行中的字符串La換成Oo。上面這個指令,只會更換第一個出現的La而已。如果全部置換,應再加上全局命令g。如下:sed -n 's/La/Oo/gp' datafile。
                     sed -n 's/La//p' dataf3。把每一行第一個出現的La刪除(把La置換成空字符串)
                     sed 's/^...//' dataf3 把每一行開頭的3個字符刪除。
                     sed 's/...$//' dataf3 把每一行末尾3個字符刪除。
                 6)取用符合樣式的字符串
                     sed -n 's/\(La\)/\1Oo/p' dataf3。把找到的La存起來,用\1取回來在使用。結果:若數據行含有La字符串,則第一個出現的La會置換成LaOo,然后再顯示這些含有La的數據行。
                 7)找到符合樣式的數據行后,再進行取代的操作。
                      sed -n '/AAA/s/234/567/p' dataf3,找到含有AAA的那一行之后,將234換成567。
                      sed -n '/AAA/,/DDD/s/B/567/p' dataf3,將含有AAA到含有DDD的那幾行,皆將其中的B換成567。
                      sed -n '2,4s/B/567/p' dataf3由第2行到第4行,皆將其中的B換成567。
            
          21、awk 是一種可以處理數據、產生格式化報表的語言,功能相當強大。awk的工作方式是讀取數據文件,將每一行數據視為記錄,每筆記錄以字段符分成若干字段,然后輸出各個字段的值。
           

           1awk常用的作用格式:

               awk “樣式”文件,把符合樣式的數據行顯示出來;

               awk ‘操作文件,對每一行都執行{}中的操作;

               awk ‘樣式{}’ 文件,對符合樣式的數據行,執行{}中的操作;

            2)用法

               awk ‘/La/’ dataf2 ,顯示含La的數據行;

               awk ‘{ print $1 , $2 }’ dataf3 ,顯示dataf3每一行的第1和第2個字段;

               awk ‘/La/{ print $1 ,$2 }’ dataf3,顯示含有La關鍵字的數據行的第1及第2個字段顯示出來;

               awk  -F: ‘/^ols3/{ print $3 ,$4}’ /etc/passwd ,使用選項-F,指定:為分隔字符,賬號ols3的(第3個字段)及gid(第4個字段)顯示出來;

          awk –F: ‘BEGIN{OFS=”+++”}/^ols3/{print $1,$2,$3,$4,$5}’ /etc/passwd。執行結果: ols3+++x+++1002+++1002+++ 。本例中,BEGIN{}區域指示awk一開始先做初始化的操作,即設定OFS=”+++”。變量OFS的作用是存儲輸出字段的分隔符。接著,尋找ols3的賬號行,找到后,使用print印出第1~5個字段,且彼此用+++隔開。

          取得網卡的IP

             Ifconfig | grep ‘inet addr:’ | grep Bcast | awk ‘{print $2}’ | awk –F: 'print $2'

          取得系統內存大小

             cat /proc/meminfo | awk ‘/MemTotal/{print $2}’


                 
          posted on 2012-06-14 18:01 kxbin 閱讀(164) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經常在別人面前批評某人,其實潛意識中是想接近他。

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(5)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          J2EE

          java技術網站

          Linux

          平時常去的網站

          數據庫

          電影網站

          網站設計

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大石桥市| 双桥区| 会同县| 岑溪市| 石狮市| 西城区| 漯河市| 辰溪县| 丰原市| 荆门市| 安阳县| 涞源县| 牙克石市| 兴山县| 东阿县| 麦盖提县| 巴楚县| 南部县| 德兴市| 罗田县| 闽清县| 五台县| 四会市| 聊城市| 靖宇县| 陕西省| 奉新县| 同心县| 东至县| 祥云县| 保德县| 郎溪县| 高州市| 霞浦县| 天峨县| 石门县| 广元市| 盐津县| 连山| 英超| 宽甸|