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
下一篇 2017-08-28

相關推薦

  • 編譯安裝LAMP及分離式LAMP平臺構建

    前言 LAMP網站架構是目前國際流行的Web框架,該框架包括:Linux操作系統,Apache網站服務器,MySQL數據庫,Perl、PHP或者Python編程語言,所有組成產品均是開源軟件,是國際上成熟的架構框架,很多流行的商業應用都是采取這個架構,和Java/J2EE架構相比,LAMP具有Web資源豐富、輕量、快速開發等特點,與微軟的.NET架構相比,L…

    Linux干貨 2015-04-20
  • linux基礎學習之進程管理和任務計劃

    內容:   進程相關概念(用戶空間、內核空間,進程、線程)   進程及系統相關工具(ps、top、pgrep、pidof、kill)   調整nice值(nice、renice)   作業管理(jobs、fg、bg、kill,&)   計劃任務(at、crontab) 一、進程相關概念 內核的功用:進…

    Linux干貨 2016-09-07
  • 如何在CentOS 6上安裝配置Samba

    Samba主要用于windows與Linux之間的文件共享,使用SMB/CIFS協議。CentOS 6默認安裝不包括samba軟件包,所以需要我們手動進行安裝。 Step 1 >> 安裝samba [root@localhost ~]# yum install samba -y Step 2 >> 創建一個共享用戶名和密碼 [root…

    Linux干貨 2016-03-22
  • linux基礎知識之nmcli

           CentOS7才有的功能網絡組:將多塊網卡聚合在一起的方法,從而實現冗錯和提高吞吐量        網絡組不同于舊版中的bonding技術,提供了更好的性能和擴展性        網路組由內核驅動和teamd守護進程實現 &n…

    Linux干貨 2016-09-07
  • B-樹和B+樹的應用:數據搜索和數據庫索引

    B-樹 1 .B-樹定義 B-樹是一種平衡的多路查找樹,它在文件系統中很有用。 定義:一棵m 階的B-樹,或者為空樹,或為滿足下列特性的m 叉樹:⑴樹中每個結點至多有m 棵子樹;⑵若根結點不是葉子結點,則至少有兩棵子樹; ⑶除根結點之外的所有非終端結點至少有[m/2] 棵子樹;⑷所有的非終端結點中包含以下信息數據:    &nb…

    Linux干貨 2015-07-30
  • while循環中的一個常見問題

    在樓主剛剛學習接觸while循環的時候,發現了一個問題,在while循環內部對變量賦值、定義變量、數組定義等等環境,在循環外面失效。 一個簡單的測試腳本如下: 執行結果證明,$new_var的結果是空值。在google上查了查,才發現問題出在管道上。 先看看下面的內容。 while循環的寫法有好幾種,它的語法結構為: while test_cmd_list;…

    2017-08-26
欧美性久久久久