bash編程練習腳本

1、寫一個腳本,判斷當前系統上所有用戶的shell是否爲可登錄shell(即用戶的shell不是/sbin/nologin);

分別這兩類用戶的個數;通過字符串比較來實現;

通過while循環遍歷來實現。

while循環的特殊用法(遍歷文件的行):

         while  read VARIABLE; do

                   循環體;

         done  < /PATH/FROM/SOMEFILE

                   依次讀取/PATH/FROM/SOMEFILE文件中的每一行,且將基賦值給VARIABLE變量;

[root@localhosthome]# vim  login.sh

#!/bin/bash

#

#Author=dylan

login_user=0

nologin_user=0

while read line; do

         usershell=$(echo$line | cut -d: -f7)

         if[ "$usershell" == "/sbin/nologin" ];then

                   letnologin_user++

         else

                   letlogin_user++

         fi

done < /etc/passwd

echo "Number of userslogin:$login_user"

echo "Number of usersnologin:$nologin_user"

代碼如下:

wKiom1kNgBTQV2rOAACcjAqUlgA861.png

執行如下:

wKioL1kNgCKCOcxNAAAcfkHjxYA423.png

2、寫一個腳本

(1)獲取當前主機的主機名,保存於hostname變量中;

(2)判斷此變量的值是否爲localhost,如果是,則將當前主機名修改爲www.magedu.com

(3)否則,則顯示當前主機名;

vim hostnametest.sh

#!/bin/bash

#

#Author=dylan

hostname=$(uname -n)

if [ "$hostname" =="localhost" ];then

         hostnamewww.magedu.com

else

         echo$hostname

fi

代碼如下:

wKioL1kNgDHh_rpiAABTggNgLCs936.png-wh_50

執行如下:

wKiom1kNgELSPF-iAAAawIUxgQ4881.png

3、寫一個腳本,完成如下功能

(1)傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在;

(2)如果存在,則顯示此設備上的所有分區信息;

vim devtest.sh

#!/bin/bash

#

#Author=dylan

if [ $# -lt 1 ];then

         echo"Plesase supply a disk path:Usage /dev/[s|h]d[a-z]"

         exit2

fi

if [ -b $1 ]; then

         fdisk-l $1

else

         echo"Invalid file"

fi

代碼如下:

wKioL1kNgFGRTBRtAABMone9VGU524.png

執行如下:

wKiom1kNgGGD_IOPAAB98-Tz7Ys096.png

4、寫一個腳本,完成如下功能

腳本能夠接受一個參數;

(1)如果參數1quit,則顯示退出腳本,並執行正常退出;

(2)如果參數1yes,則顯示繼續執行腳本;

(3)否則,參數1爲其它任意值,均執行非正常退出;

[root@localhost home]# vim  arg.sh

#!/bin/bash

#

#Author=dylan

if [ $# -ne 1 ];then

         echo"enter only one agrument"

         exit1

else

         case$1 in

         "quit")

                   echo"quitting..."

                   exit0

                   ;;

         "yes")

                   echo"continuing..."

                   exit0

                   ;;

         *)

                   echo"interrupt..."

                   exit2

         esac

fi

代碼如下:

wKioL1kNgHPjI-s9AABery1JJAQ527.png

執行如下:

wKioL1kNgISxgY9oAAApUCgcoGk510.png

5、寫一個腳本,完成如下功能

傳遞一個參數給腳本,此參數爲gzipbzip2或者xz三者之一;

(1)如果參數1的值爲gzip,則使用targzip歸檔壓縮/etc目錄至/backups目錄中,並命名爲/backups/etc-20160613.tar.gz

(2)如果參數1的值爲bzip2,則使用tarbzip2歸檔壓縮/etc目錄至/backups目錄中,並命名爲/backups/etc-20160613.tar.bz2

(3)如果參數1的值爲xz,則使用tarxz歸檔壓縮/etc目錄至/backups目錄中,並命名爲/backups/etc-20160613.tar.xz

(4)其它任意值,則顯示錯誤壓縮工具,並執行非正常退出;

#!/bin/bash

#

#Author=dylan

if [ $# -ne 1 ];then

         echo"enter only one argument"

         exit1

else

         case$1 in

         "gzip")

                   tar-zcvf /backups/etc-`date +"%Y%m%d"`.tar.gz /etc &> /dev/null

                   echo"use gzip "

                   exit0

         ;;

         "bzip2")

                   tar-jcvf /backups/etc-`date +"%Y%m%d"`.tar.bz /etc &> /dev/null

                   echo"use bzip2 "

                   exit0

         ;;

         "xz")

                   tar-Jcvf /backups/etc-`date +"%Y%m%d"`.tar.xz /etc &> /dev/null

                   echo"use xz "

                   exit0

         ;;

         *)

                   echo"invalid compress tools"

                   exit2

         esac

fi

代碼如下:

wKiom1kNgJTxWeeAAACLFJqzB6g027.png

執行如下

wKioL1kNgKHDQl2ZAAAny77d-5M017.png

6、寫一個腳本,接受一個路徑參數:

(1)如果爲普通文件,則說明其可被正常訪問;

(2)如果是目錄文件,則說明可對其使用cd命令;

(3)如果爲符號鏈接文件,則說明是個訪問路徑;

(4)其它爲無法判斷;

[root@localhost home]# vim filetest.sh

#!/bin/bash

#

#Author=dylan

if [ $# -ne 1 ];then

         echo"enter only one agrument"

         exit1

else

         if[ -f $1 ];then

                   echo"It is a normal file that can be accessed normally"

         elif[ -d $1 ];then

                 echo"It is a directory file,then you can use the cd command"

         elif[ -L $1 ];then

                   echo"It is a aymbolic link file,the description ia an access path"

         else

                   echo"It can not be judged"

         fi

fi

 

代碼如下:

wKiom1kNgLGRLIsCAABrJqeP7Bg053.png

執行如下:

wKioL1kNgMDRGTx0AAAvIAQM3D8179.png

7、寫一個腳本,取得當前主機的主機名,判斷

(1)如果主機名爲空或爲localhost,或爲"(none)",則將其命名爲mail.magedu.com

(2)否則,顯示現有的主機名即可;

[root@localhost home]# vim nametest.sh

#!/bin/bash

#

#Author=dylan

name=$(uname -n)

if [ -z "$name" -o  "$name" == "localhost" -o"$name" == "none" ];then

         hostnamemail.magedu.com

         echo"hostname is mail.magedu.com"

else

         echo$name

fi

代碼如下:

wKiom1kNgNSSzuVJAABK0fYPeZk878.png

 

執行如下:

wKiom1kNgOyDlMpNAAAZebSZPcI494.png

8、寫一腳本,接受一個用戶名爲參數;

(1)如果用戶的id號爲0,則顯示其爲管理員;

(2)如果用戶的id號大於0且小於500, 則顯示其爲系統用戶;

(3)否則,則顯示其爲普通用戶;

 

[root@localhost home]# cat idtest.sh

#!/bin/bash

#

#Author=dylan

if [ $# -ne 1 ];then

         echo"enter only one agrument"

         exit1

else

         id$1 &>/dev/null

         if[ $? -ne 0 ];then

                   echo"user does not exist"

                   exit2

         else

                   userid=$(id-u $1)

                   if[ $userid -eq 0 ];then

                            echo"sys admin"

                   elif[ $userid -gt 0 -a $userid -lt 500 ];then

                            echo"sys user"

                   else

                            echo"general user"

                   fi

         fi

fi

 

代碼如下:

wKiom1kNgPzDBHWAAABpY6G43Cs157.png

執行如下:

wKioL1kNgRXTLGbpAAA3FiLI_Iw505.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章