Linux基礎之shell腳本編程(四)

1、寫一個腳本

  (1) 能接受四個參數:start, stop, restart, status

   start: 輸出“starting 腳本名 finished.”

  (2) 其它任意參數,均報錯退出;

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 flag=0
  5 if [ $# -eq 1 ];then
  6   case $1 in
  7     start)
  8       echo "start $0 finished"
  9       filg=1
 10       ;;
 11     stop)
 12       echo "stop $0 finished"
 13       flag=0
 14       ;;
 15     restart)
 16       echo "restart $0 finished"
 17       flag=1
 18       ;;
 19     status)
 20       if [ $flag -eq 1 ];then
 21         echo "$0 is running..."
 22       else
 23         echo "$0 stopped...."
 24       fi
 25       ;;
 26     *)
 27       echo "invalid argument,usage:$0 {start|stop|status|restart}"
 28       ;;
 29   esac
 30 else
 31   echo "usage : $0 {start|stop|status|restart}"
 32 fi

2、寫一個腳本,判斷給定的用戶是否登錄了當前系統;

  (1) 如果登錄了,則顯示用戶登錄,腳本終止;

  (2) 每3秒鐘,查看一次用戶是否登錄;

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 read -p "please input username:" username
  5 until who | grep "\b$username\b" &>/dev/null ;do
  6   echo "$username not login "
  7   sleep 3
  8 done
  9 echo "$username login!!"
 10 exit 0
 11

3、寫一個腳本,顯示用戶選定要查看的信息;

   cpu) display cpu info

   mem) display memory info

   disk) display disk info

   quit) quit

   非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 echo  "please input what you want to do:"
  5 echo "cpu: display cpu info"
  6 echo "mem: display mem info"
  7 echo "disk: diplay disk info"
  8 echo "quit: quit this script"
  9 read  input
 10 until [ $input == "cpu" -o $input == "mem" -o $input == "disk" -o $input == "quit" ] ; do
 11   read -p "error input,please input what you want to do:" input
 12 done
 13 case $input in
 14   cpu)
 15     lscpu
 16     ;;
 17   mem)
 18     cat /proc/meminfo
 19     ;;
 20   disk)
 21     fdisk -l
 22     ;;
 23   quit)
 24     echo "quit..."
 25     exit 0
 26     ;;
 27 esac
 28

4、寫一個腳本

  (1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;

  (2) 提示用戶輸入一個用戶名或輸入“quit”退出;

    當輸入的是用戶名,則調用函數顯示用戶信息;

    當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit: 

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 function findUser
  5 {
  6   if id $1 &>/dev/null;then
  7     userid=$(grep "^\b$1\b" /etc/passwd | cut -d":" -f3)
  8     usershell=$(grep "^\b$1\b" /etc/passwd | cut -d":" -f7)
  9     echo "user $1: uid=$userid, shell=$usershell "
 10   else
 11     echo "the user not exist"
 12   fi
 13 }
 14 
 15 echo "input a user name for the user info,input quit for quit:" 
 16 read input
 17 until [ $input == "quit" ];do
 18   findUser $input
 19   echo "please input again or quit" 
 20   read input
 21 done
 22

5、寫一個腳本,完成如下功能(使用函數)

   (1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;

   (2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;

   (3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 command_target_dir=/mnt/sysroot/
  5 lib_target_dir=/mnt/sysroot/rootfs/
  6 function copy
  7 {
  8   if $1 &>/dev/null;then
  9     command=$(which $1 | tail -1)
 10     cp $command $command_target_dir
 11     echo "$1 copy finished"
 12     for i in { $(ldd $command | cut -d" " -f3) };do
 13       cp $i $lib_target_dir &>/dev/null
 14     done
 15     echo "$1 lib file copy finished"
 16   else
 17     echo "error input .."
 18   fi
 19 }
 20 
 21 echo "input a command or quit for quit:"
 22 read input
 23 until [ $input == "quit" ];do
 24    if [ cd $command_target_dir &>/dev/null -a cd $lib_target_dir &>/dev/null ] ;then
 25      copy $input
 26    else
 27      mkdir -p $command_target_dir &>/dev/null
 28      mkdir -p $lib_target_dir &>/dev/null
 29      copy $input
 30    fi
 31   echo "you can input a command again or quit for quit:"
 32   read input
 33 done

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

(0)
zhangbaozhangbao
上一篇 2016-11-27
下一篇 2016-11-28

相關推薦

  • DNS原理詳解

    1、DNS概述   domain name service  區域名稱服務或者domain named system 區域名稱系統,是互聯網最基礎的服務,分為正向域名解析(將域名解析為IP地址)和反向域名解析(將IP地址解析為域名)兩部分。 2、bind   bind(Berkeley Internet Name Domain)…

    Linux干貨 2016-08-26
  • Linux運維學習歷程-第一天-基礎知識

    什么是Linux   Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。 為什么學Linux…

    Linux干貨 2016-08-03
  • 設定Linux自動登陸

    設定Linux自動登陸 在實驗場景中我們可能會經常重新啟動Linux,然后反復輸入賬戶密碼登陸。為了在每次啟動后快速進入系統減少在實驗場景中不必要的工作,我們可以設定Linux在啟動后自動登陸到指定賬戶(實驗中一般為root賬戶)?;贚inux一切皆文件的思想,我們可以通過修改配置文本的方式決定是否啟用自動登錄,以及自動登錄的賬戶是普通用戶賬戶還是root…

    Linux干貨 2017-07-15
  • 函數定義、使用

        1、函數介紹         函數function是由若干條shell命令組成的語句塊,實現代碼重用和模塊化編程。           &nb…

    Linux干貨 2016-08-22
  • linux入門學習動手部分

    linux入門學習了幾天,各種命令跟選項如果靠記憶很容易忘記,通過下面隨堂實驗加深記憶 實驗操作部分 enable 命令使用 禁用內部命令 enable -n echo 禁用echo命令 重新啟用echo命令 enable echo type 命令使用 type -a echo 列出所有echo的內部命令外部命令 type -p cd 顯出cd外部命令的路徑…

    Linux干貨 2017-05-20
  • 第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;     在線的主機使用綠色顯示;     不在線的主使用紅色顯示; #!/bin/bash for i in {1..254};do if ping -c 1 -w 1 192.16…

    2017-07-03
欧美性久久久久