shell腳本編寫實例

實際案例

1.判斷接收參數個數大於1 shell

      [ $# -lt 1 ] && echo "至少須要一個參數" && { echo "我要退出了.... "; exit; } || echo "搞到參數"編程

2.統計文件夾 和 文件數centos

     let etcd=`ls -l /etc| grep "^d"|wc -l`bash

     let etcf=`ls -l /etc| grep "^-"|wc -l`app

     let sum=$[$etcd+$etcf]ide

3.取某列的最大值centos7

     number=`df | grep '^/dev' | tr -s " " " "|cut -d" " -f5|tr -s "%" " "|sort -n|tail -n1`spa

4.短路條件判斷線程

    [ $# -ne 2 ] && echo "need two args" && exit調試

5.統計文件的空白行

    let b=`grep '^$' $2|wc -l`

6.ping通遠程主機 

    ping -c2 $1 &> /dev/null
    [ $? -eq 0 ] && echo "$1 能夠被ping通" || echo "$1 不能夠被ping通"

7.一次性刪除大批量文件

   ls |xargs rm -rf 當刪除的文件數量過多,超過了所支持的參數數量上限時,可配合管道及xargs來刪除。

8.刪除文件中不連續的重複行

    sort -k2n file | uniq > a.out

    當file中的重複行再也不一塊兒的時候,uniq無法刪除全部的重複行。通過排序後,全部相同的行都在相鄰,所以unqi能夠正常刪除重複行。

9.分組倒序排序列表

   cat access_log | cut -d" " -f1|sort|uniq -c|sort -nr|head -n10

10.把多條命令當成一條命令集合來執行

   id $1 &> /dev/null && echo "$1 user has added" || { useradd $1; echo "add user $1 success"; }

 

11.查看文件夾和文件的大小  du    -sh

    [root@centos7 ~]# du -sh appserver/     appserver是目錄
      5.0M          appserver/
   [root@centos7 ~]# du  -sh  f1                  f1是文件
      4.0K         f1

 

12.查看端口占用狀況

   一、lsof -i:端口號 用於查看某一端口的佔用狀況,好比查看8000端口使用狀況,lsof -i:8000

     

      能夠看到8000端口已經被輕量級文件系統轉發服務lwfs佔用

 

   二、netstat -tunlp |grep 端口號,用於查看指定的端口號的進程狀況,如查看8000端口的狀況,netstat -tunlp |grep 8000

   

   

 

shell編程知識點

1.(cmd1;exit;) 和 {cmd2;exit;}的區別

   ()會開啓一個子線程,exit退出的是子進程,對執行線程沒有影響

   { }不會開啓子線程,exit退出的是執行進程自己.

 2.source .bashrc和bash .bashrc的區別

    source 表示.bashrc在當前shell進程中運行

    bash 會開啓一個子shell進程來執行當前shell 腳本

3.字符串匹配

      [ "$var"="ha" ] 精確判斷$var字符串是否等於ha
      [[ "$var" ~="regx" ]]
      [ x"$var"="x" ] 判斷$var字符串是否爲空

4.變量格式的保留

     echo $name 把全部的行壓縮成了一行,不保留文件內容換行格式.
     echo "$name" 添加雙引號保留原文件內容的換行格式.

5.bash調試方式

     1.檢查語法錯誤                          bash -n test.sh
     2.跟蹤調試執行腳本                 bash -x test.sh

6.bash的配置文件

       1.全局配置
              1./etc/profile
               2./etc/profile.d/*.sh
               3./etc/bashrc
        2.我的配置
               1.~/.bash_profile
               2.~/.bashrc

7.shell和其它語言的不一樣之處

     shell把空字符串和1相加運算會獲得1,並不會提示錯誤.其它語言空類型是不能和整數進行運算的

[root@centos7 ~]# a="" [root@centos7 ~]# b=a+1 [root@centos7 ~]# echo b b [root@centos7 ~]# echo $b a+1 [root@centos7 ~]# let b=a+1 [root@centos7 ~]# echo $b 1
View Code
相關文章
相關標籤/搜索