bash脚本进阶练习题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash脚本进阶练习题相关的知识,希望对你有一定的参考价值。

1、编写脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息

[ $# -lt 1 ] && echo "input username !" && exit

id $1 &> /dev/null

if [ $? -eq 1 ];then

        useradd $1 ;echo -e "successful\n`id $1`"

else echo "user already exists"

fi

2、编写脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息

read -p "yes or no " answer

if [[ $answer =~ ^[Yy]([Ee][Ss])?$ ]];then

        echo "your anwser is yes"

elif [[ $answer =~ ^[Nn][Oo]?$ ]];then

        echo "your anwer is no"

else

        echo "other"

fi

3、编写脚本/root/bin/filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)

[ $# -ne 1 ] && echo "input file path"&&exit 1

if [ -d $1 ] ;then

        echo dir

elif [ -h $1 ] ;then

     echo link

elif [ -f $1 ] ;then

        echo file

elif [ ! -e $1 ] ;then

        echo not exist

else echo other

fi

4、编写脚本/root/bin/checkint.sh,判断用户输入的参数是否为正整数

read -p "input positive integer " num

if [[ $num =~ ^[1-9][0-9]*$ ]] ;then

        echo right

else

        echo "error"

fi


1、判断/var/目录下所有文件的类型

for i in `ls -A /var/` ; do

        echo "$i -- `filetype15.sh /var/$i`"

done

2、添加10个用户user1-user10,密码为8位随机字符

> ./user.log

for i in {1..10} ;do

        useradd user$i

        mima=`openssl rand -base64 10|head -c8`

        echo $mima|passwd --stdin user$i

        echo "user$i   $mima" >>./user.log

done

3、/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的输出为文件加stop,以S开头的输出为文件名加start,如K34filename stop S66filename start

for i in `ls /etc/rc.d/rc3.d` ;do

        if [[ $i =~ ^K.*$ ]];then

                echo "$i start"

        elif [[ $i =~ ^S.*$ ]];then

                echo "$i stop"

        fi

done

4、编写脚本,提示输入正整数n的值,计算1+2+…+n的总和

read -p "input a number " i

if [[ $i =~ [1-9][0-9]* ]];then

        for j in `seq $i`;do

                let sum+=j

        done

        echo $sum

else 

        echo error

fi

5、计算100以内所有能被3整除的整数之和

for i in `seq 100`;do

        let sum=i%3

        if [ $sum  -eq 0 ];then

                let add=add+$i

        fi

done

echo $add

6、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态

read -p "input ipv4 address " ip

if [[ $ip =~ ^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]] ;then

        nip=`echo $ip|cut -d. -f1-3`

        for i in {1..254};do

                        ping -w1 -c1 $nip.$i &>/dev/null && echo "$nip.$i is up"|| echo "$nip.$i is down"&

        done

        wait

else

        echo "error"

fi

7、打印九九乘法表

for i in `seq 9`;do

                for j in `seq $i`;do

                        let k=$i*$j

                        echo -e "$j*$i=$k \c"

                done

        echo

 done 

8、在/testdir目录下创建10个html文件,文件名格式为数字N(从1到10)加随机8个字母,如:1AbCdeFgH.html

for i in `seq 10`;do

        num=`cat /dev/urandom |tr -dc "[:alpha:]"|head -c8`

        mkdir /app/$i$num.html

done

9、打印等腰三角形

read -p "input mun " t

if [[ $t =~ ^[1-9][0-9]*$ ]];then

        for n in `seq $t`;do

                        let kmun=$t-$n

                        let smun=2*$n-1

                for i in `seq $kmun`;do

                        echo -e " \c"

                done

                for i in `seq $smun`;do

                echo -e "*\c"

        done

                echo

        done

else 

        echo error

fi

10.国际象棋

        for i in `seq 4`;do

                for j in `seq 4`;do

                        for a in `seq 4`;do

                                echo -e "\033[46m         \033[0m\c"

                                echo -e "\033[43m         \033[0m\c"

                        done

                        echo

                done

                for k in `seq 4`;do

                        for b in `seq 4`;do

                                echo -e "\033[43m         \033[0m\c"

                                echo -e "\033[46m         \033[0m\c"

                        done

                echo

                done

        done


以上是关于bash脚本进阶练习题的主要内容,如果未能解决你的问题,请参考以下文章

Bash 脚本进阶,经典用法及其案例

帮助Linux运维十分钟完成 Bash 脚本进阶!Bash经典用法及其案例详解列举!

Shell脚本进阶练习

脚本进阶,函数调用实例练习

Bash 脚本进阶,经典用法及其案例

Linux基础之bash脚本编程进阶篇-选择执行语句(if,case)