bash腳本編程實例

bash腳本編程實例

  • 1.寫一個腳本

    • 能接受四個參數:start、stop、restart、status
    • start:輸出“starting腳本名finished.”
    • restart:輸出“restarting腳本名finished.”
    • stop:輸出“stoping腳本名finished.”
    • status:輸出“status腳本名finished.”
    • 其他任意參數,均報錯退出

      #!/bin/bash
      case $1 in
      start)
      echo "starting ${0} finished."
      ;;
      stop)
      echo "stoping ${0} finished."
      ;;
      restart)
      echo "restarting ${0} finished."
      ;;
      status)
      echo "status ${0} finished."
      ;;
      *)
      echo "error input."
      exit 1
      ;;
      esac
  • 2.寫一個腳本,判斷給定的用戶是否登錄了當前系統

    • 如果登錄了,則顯示用戶登錄,腳本終止
    • 每三秒鐘,查看一次用戶是否登錄

      #!/bin/bash
      if [ $# -eq 0 ];then
       echo "there is no username inputing."
       exit 1
      fi
      
      while true;do
       if id $1 &> /dev/null;then
           user=$(who|grep "^$1"|cut -d' ' -f1)
           if [[ $user == $1 ]];then
               echo "$1 has logined."
               break
           else
               sleep 3
           fi
       else
          echo "there is no user like $1."
          exit 2
      fi
      done
  • 3.寫一個腳本,顯示用戶選定要查看的信息

    • cpu)display cpu info
    • mem)display memory info
    • disk)display disk info
    • quit)quit
    • 非此四項選擇,則提示錯誤,并要求用戶重新選擇,直到其給出正確的選擇為止

      #!/bin/bash
      cat << EOF
      cpu)display cpu info
      mem)display memory info
      disk)display disk info
      quit)quit
      EOF
      
      read -p "please input:" ops
      
      while true;do
       if [ $ops != "cpu" -a $ops != "mem" -a $ops != "disk" -a ops != "quit" ];then
         read -p "please input again:" ops
       else
         break
       fi
      done
      
      case $ops in
      cpu)
        lscpu
      ;;
      mem)
        free -m
      ;;
      disk)
        fdisk -l
      ;;
      quit)
        exit 0
      ;;
      esac
  • 4.寫一個腳本

    • 用函數實現返回一個用戶的ID和SHELL;用戶名通過參數傳遞而來
    • 提示用戶輸入一個用戶名或者輸入“quit”退出
    • 當輸入的是用戶名,則調用函數顯示用戶信息
    • 當用戶輸入quit,則退出腳本,進一步地,顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或者quit

      #!/bin/bash
      
      userinfo(){
       if [ -z $1 ];then
           return 1
       elif id $param &>> /dev/null;then
           echo "$1 ID is $(id -u $1)."
           echo "$1 shell is $(grep "^$1" /etc/passwd|cut -d: -f7)"
       else
           return 1
       fi
      
      }
      
      while true;do
       read -p "please input a username or quit:" param
       if [[ $param == "quit" ]];then
          exit 0
       else
          userinfo $param
          [ $? -eq 1 ]&&echo "no user named $1."
       fi
      done

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

(2)
N27_xiaoniN27_xiaoni
上一篇 2017-09-04
下一篇 2017-09-04

相關推薦

  • 馬哥教育網絡班21期+第4周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel /home/ && mv /home/skel&nbsp…

    Linux干貨 2016-08-02
  • 馬哥教育網絡第20期—IO類型與IO模型

    IO類型與IO模型 IO類型 同步與異步(synchronous,asynchronous):關注消息通知機制 同步:進程發出系統調用之后,不會立即有返回信息,但是一旦有返回信息,則一定是最終結果. 異步:進程發出系統調用之后,會有立即返回結果,但不是最終的結果,當內核處理完成之后,內核通過通知機制通知進程,該系統調用已完成. 阻塞與非阻塞(blocking…

    Linux干貨 2016-06-26
  • Linux系統認知

    前言 在認識Linux系統之前先介紹下計算機的組成構造及其功能: 1,簡單來說計算機可以劃分為軟件系統和硬件系統: (1)軟件系統自不必說就是各種不同的程序,協助用戶更好地使用電腦。 (2)硬件系統指的是主機、顯示器、鼠鍵等硬件設備。 2,按馮諾依曼體系可將計算機按邏輯構成分為: (1)CPU(運算器、控制器)。運算器是數據處理裝置,用來完成對數據的算術運算…

    Linux干貨 2016-09-20
  • vsftpd基于mysql存儲認證(centos7)

    (1)首先開發包組和服務器平平臺開發包組 (2)yum安裝需要的依賴包 (3)編譯安裝pam_mysql模塊 (4)配置mysql,并添加mysql中的vsftpd進程用戶,且創建vsftpd數據庫,并將vsftpd數據庫授權給vsftpd用戶,且創建vsftpd.users表,并在表中添加用戶tom (5)創建vsftpd要上傳和下載的URL (6)創建基…

    Linux干貨 2016-10-15
  • httpd服務歸納:httpd基本配置(周邊常用工具,httpd 編譯安裝)

    一、 服務器status頁     內生的status信息,可以通過web予以顯示, 可以映射為url地址進行訪問     1. 配置路徑有幾種不同方式          如果URL可以映射…

    Linux干貨 2015-05-27
  • N23_第1周博客作業

    1、描述計算機的組成及其功能。     根據馮·諾依曼體系計算機有中央處理器、主存儲器、輸入/輸出三個子系統組成。 1.中央處理器 CPU(Central Processing Unit)用于數據運算。CPU有控制單元、算數邏輯單元、寄存器組組成。 (1)控制單元:控制各個子系統操作 (2)算數邏輯單元:對數據進行邏輯、移位和算數運算 邏…

    Linux干貨 2016-09-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-10-10 13:02

    一開始的內容比較基礎,但是非常重要,這篇博客整理的很不錯,再接再勵。

欧美性久久久久