bash腳本編程實例

bash腳本編程實例

  • 1.寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄的shell(即用戶的shell不是/sbin/nologin),分別統計這兩類用戶的個數(通過字符串比較來實現)

    #!/bin/bash
    cat /etc/passwd|awk -F: 'BEGIN{nologin=0;login=0}{if($NF=="/sbin/nologin") {nologin++} else {login++}} END{print"login",login;print"nologin",nologin}'
  • 2.寫一個腳本

    • 獲取當前主機的主機名,保存于hostname變量中
    • 判斷此變量的值是否為localhost,如果是,則將當前主機名修改為www.magedu.com
    • 否則,則顯示當前主機名

      #!/bin/bash
      hostname=$(hostname)
      if [[ $hostname == 'localhost' ]];then
      hostname www.magedu.com
      else
      echo $hostname
      fi
  • 3.寫一個腳本,完成如下功能

    • 傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在
    • 如果存在,則顯示此設備所有的分區信息

      #!/bin/bash
      if [ -b $1 ];then
      fdisk -l $1
      else
      echo ${1} is not existing.
      fi
  • 4.寫一個腳本,完成如下功能,腳本能夠接受一個參數

    • 如果參數1為quit,則顯示退出腳本,并執行正常退出
    • 如果參數1為yes,則顯示繼續執行腳本
    • 否則,參數1為其他任意值,均執行非正常退出

      #!/bin/bash
      if [[ $1 == 'quit' ]];then
      echo "normal exit."
      exit 0
      elif [[ $1 == 'yes' ]];then
      echo "go on execting."
      else
      exit 1
      fi
  • 5.寫一個腳本,完成如下功能,傳遞一個參數給腳本,此參數為gzip、bzip2或者xz三者之一

    • 如果參數1的值為gzip,則使用tar和gzip歸檔壓縮/etc目錄至/backups目錄中,并命名為/backups/etc-20160613.tar.gz
    • 如果參數1的值為bzip2,則使用tar和bzip歸檔壓縮/etc目錄至/backups目錄中,并命名為/backups/etc-20160613.tar.bz2
    • 如果參數1的值為xz,則使用tar和xz歸檔壓縮/etc目錄至/backups目錄中,并命名為/backups/etc-20160613.tar.xz
    • 如果其他任意值,則顯示錯誤壓縮工具,并執行非正常退出

      #!/bin/bash
      if [[ $1 == 'gzip' ]];then
      tar -zcvf /backups/etc-20160613.tar.gz  /etc
      elif [[ $1 == 'bzip2' ]];then
      tar -jcvf /backups/etc-20160613.tar.bz2  /etc
      elif [[ $1 == 'xz' ]];then
      tar -Jcvf /backups/etc-20160613.tar.bz2  /etc
      else
      echo "error compressing tool."
      exit 1
      fi
  • 6.寫一個腳本,接受一個路徑參數

    • 如果為普通文件,則說明其可以被正常訪問
    • 如果是目錄文件,則說明可對其使用cd命令
    • 如果為符號鏈接文件,則說明是個訪問路徑
    • 其他為無法判斷

      #!/bin/bash
      if [ -f $1 -a ! -L $1 ];then
      echo "this is a file,and it can be accessed."
      elif [[ -d $1 ]];then
      echo "this is a directory,and it can use cd commond."
      elif [[ -L $1 ]];then
      echo "this is a symbolic link,and it is a accessing path."
      else
      echo "uknown"
      fi
  • 7.寫一個腳本,取得當前主機的主機名,判斷如果主機名為空或為localhost,或為“(none)”,則其命名為mail.magedu.com

    #!/bin/bash
    hostname=$(hostname)
    if [ -z $hostname -o  $hostname == 'localhost' -o  $hostname == 'none' ];then
      hostname mail.magedu.com
    fi

原創文章,作者:N27_xiaoni,如若轉載,請注明出處:http://www.www58058.com/85520

(0)
N27_xiaoniN27_xiaoni
上一篇 2017-08-28 10:17
下一篇 2017-08-28 14:14

相關推薦

  • openssl總結及私有CA的搭建

    一、前言 什么是openssl?講openssl之前我們先了解一下什么是ssl?ssl是secure socket layer的簡稱,其使用對稱加密,非對稱加密(公鑰加密解密),單向加密解密結合證書實現數據傳輸安全,openssl默認是在系統安裝時就已經安裝上去的。隨著互聯網的迅速發展,網絡通信已經成為傳遞信息的主要途徑。而通信時的數據傳輸大部分都是明文傳輸…

    Linux干貨 2016-01-05
  • 詳解LAMP源碼編譯安裝

    詳解LAMP源碼編譯安裝 LAMP簡介 LAMP是當下非常流行的一套Web架構,我們可以在GNU/Linux下通過其他人打包的程序包來進行安裝; 但是在生產環境中,很多時候都需要我們自己定制安裝AMP,編譯安裝LAMP有以下幾個優點 根據生產環境靈活定制程序 優化編譯參數,提高性能 解決不必要的軟件依賴 一、準備工作 卸載yum或rpm安…

    Linux干貨 2016-10-16
  • 系統基礎之AWK詳解

    GUN awk 文本處理三工具:grup,sed,awk     grep,egrep,fgrep:文本過濾工具     sed:行編輯器         模式空間,保持空間   …

    Linux干貨 2016-09-21
  • lnmap實戰之負載均衡架構(無高可用)

    lnmap實戰之負載均衡架構(無高可用) 架構圖如下: 此次實戰軟件,全部yum安裝 1.準備好機器,同步好時間 192.168.42.150 node1 [負載均衡器]192.168.42.152 node3 [web2]192.168.42.153 node4 [web1]192.168.42.151 node2 [memcached session存儲…

    Linux干貨 2017-06-22
  • linux文件管理類命令

    stat、alias、xargs命令使用;(非)字母,(非)數字的表示方法。

    2017-12-11
  • 第六周

      第6周   1 復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; cp /etc/rc.d/rc.sysinit ; sed -i 's@^[[:space:]]\+@#@g&#03…

    Linux干貨 2017-02-13
欧美性久久久久