高级shell脚本(for、while、if、case)

前端之家收集整理的这篇文章主要介绍了高级shell脚本(for、while、if、case)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、编写脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之,并生成8位随机口令并存在一个文件中,初步提示改口令,显示添加用户的id号等信息。

#!/bin/bash
#------------------------------------------
#Filename:cid.sh
#Date:2017-09-16
#Author:liuke
#Description:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之#
生成8位随机口令并存在一个文件中,初步提示改口令,显示添加用户的id号等信息。
#-------------------------------------------
read-p"pleaseinputausername:"uname
id$uname&>/dev/null
e=$?
if[$e-eq0]
then
echo"$unameisexist"
exit2
else
useradd$uname
echo`cat/dev/urandom|tr-d-c'[:alnum:][:punct:]'|head-c10`>/app/mima
passwd$uname
id$uname
fi

unsetuanmee

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

#!/bin/bash
#------------------------------------------
#Filename:yesno.sh
#Revision:null
#Date:2017-09-10
#Author:liuke
#Description:提示用户输入yes或no,或是其它信息
#-------------------------------------------
read-p"Yuema?yesorno:"word
word=`echo$word|tr"A-Z""a-z"`
case$wordin
yes|y)
echo"yue"
;;
no|n)
echo"buyue"
;;
*)
echo"errorinput"
esac

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

#!/bin/bash
#------------------------------------------
#Filename:filetype.sh
#Date:2017-09-11
#Author:liuke
#Description:判断用户输入文件路径,显示文件类型
#-------------------------------------------
read-p"pleaseinputafile:"file
if[-f$file];then
echo"filetypeiscommonfile"
elif[-d$file];then
echo"filetypeisdirectory"
elif[-h$file];then
echo"filetypeissoftlink"
else
echo"filetypeisother"
fi
unsetfile

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

#!/bin/bash
#------------------------------------------
#Filename:checkint.sh
#Date:2017-09-11
#Author:liuke
#Description:判断用户输入的参数是否为正整数
#-------------------------------------------
read-p"pleaseinputanum:"num
if[[$num=~^[1-9][0-9]*$]];then
echo"thenumisapositiveinteger"
else
echo"wronginput"
fi

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

#!/bin/bash
#------------------------------------------
#Filename:file-var.sh
#Date:2017-09-11
#Author:liuke
#Description:判断/var/目录下所有文件的类型
#------------------------------------------
cd/var/;ls-1|whilereadfilename
do
if[-f$filename];then
echo"$filenamefiletypeiscommonfile"
elif[-d$filename];then
echo"$filenamefiletypeisdirectory"
elif[-h$filename];then
echo"$filenamefiletypeissoftlink"
else
echo"$filenamefiletypeisother"
fi
done
unsetfilename

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

#!/bin/bash
#------------------------------------------
#Filename:10user.sh
#Date:2017-09-11
#Author:liuke
#Description:添加10个用户user1-user10,密码为8位随机字符
#-------------------------------------------
for((i=1;i<=10;i+=1))
do
pw=`cat/dev/urandom|tr-d-c'[:alnum:][:punct:]'|head-c8`
useradduser$i&&echo$pw|passwd--stdinuser$i&>/dev/null
echo-e"user:user$i;passwd:$pw"
done


#foriin{1..10};douserdel-ruser$i;done一次删除10个用户

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

#!/bin/bash
#------------------------------------------
#Filename:rc3.sh
#Date:2017-09-16
#Author:liuke
#Description:分别读取/etc/rc.d/rc3.d/每个文件,以K开头的输出文件加stop,以S开头的输出文件名加start
#-------------------------------------------
forfilenamein`ls/etc/rc.d/rc3.d/`;do
case$filenamein
K*)
echo"$filenamestop"
;;
S*)
echo"$filenamestart"
esac
done
unsetfilename

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

#!/bin/bash
#------------------------------------------
#Filename:1-nhe.sh
#Date:2017-09-11
#Author:liuke
#Description:提示输入正整数n的值,计算1+2+…+n的总和
#-------------------------------------------
read-p"pleaseinputanum:"num
if[[$num=~^[1-9][0-9]*$]];then
sum=0
for((i=1;i<=$num;i+=1))
do
sum=$(($sum+$i))
done
echo"1+2+…+n的总和为:$sum"
fi
unsetnumsum

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

#!/bin/bash
#------------------------------------------
#Filename:zhengchu3.sh
#Date:2017-09-11
#Author:liuke
#Description:计算100以内所有能被3整除的整数之和
#-------------------------------------------
sum=0
for((i=3;i<=100;i+=3))
do
sum=$(($sum+$i))
done
echo"100以内所有能被3整除的整数之和为:$sum"
unsetsum

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

#!/bin/bash
#------------------------------------------
#Filename:scanip11-2.sh
#Revision:null
#Date:2017-09-10
#Author:liuke
#Description:提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态。
#-------------------------------------------
>/app/ip.txt
read-p"pleaseinputaip:"ip
echo$ip|egrep"(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4]0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])"&>/dev/null
if[$?-eq0];then
id=`echo$ip|egrep-o".*\."`
ping-c1-w1$ip&>/dev/null
echo"$ipisup">>/app/ip.txt
echo"$ipisdown"
fi

11、打印九九乘法表(for循环)

#!/bin/bash
#------------------------------------------
#Filename:9*9.sh
#Revision:null
#Date:2017-09-10
#Author:liuke
#Description:打印九九乘法表(for循环)
#-------------------------------------------
foriin{1..9};do
forjin`seq$i`;do
echo-en"${i}X${j}=$[$ix$j]\t"
done
echo
done

12、打印九九乘法表(while循环)

#!/bin/bash
#------------------------------------------
#Filename:9*9while.sh
#Date:2017-09-11
#Author:liuke
#Description:打印九九乘法表(while)
#-------------------------------------------
while((i<10,j<9))
do
echo-en"${i}X${j}=$[$i*$j|bc]\t"
done
echo

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

#!/bin/bash
#------------------------------------------
#Filename:10user.sh
#Date:2017-09-11
#Author:liuke
#Description:添加10个用户user1-user10,密码为8位随机字符
#-------------------------------------------
for((i=1;i<=10;i+=1))
do
pw=`cat/dev/urandom|tr-d-c'[:alnum:][:punct:]'|head-c8`
useradduser$i&&echo$pw|passwd--stdinuser$i&>/dev/null
echo-e"user:user$i;passwd:$pw"
done


#foriin{1..10};douserdel-ruser$i;done一次删除10个用户

14、编写脚本,求100以内所有正奇数之和

#!/bin/bash
#------------------------------------------
#Filename:jishuhe.sh
#Date:2017-09-11
#Author:liuke
#Description:编写脚本,求100以内所有正奇数之和
#-------------------------------------------
sum=0;i=1
while((i<100))
do
sum=$[$sum+$i]
leti=$[$i+2]
done
echo"100以内所有正奇数之和为:$sum"

15、编写脚本,利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大值和最小值。

#!/bin/bash
#------------------------------------------
#Filename:random10-2.sh
#Date:2017-09-16
#Author:liuke
#Description:利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大值和最小值
#while
#-------------------------------------------
i=1
while[$i-lt11];do
sum=`echo$[RANDOM]`
echo-e"$sum""\c"
if[$i-le1];then
max=$summin=$sum
elif[[$sum-gt$max]];then
max=$sum
elif[[$sum-lt$min]];then
min=$sum
fi
leti+=1
done
echo
echo"thenumbermaxis:$max;minnumberis:$min"

16、编写脚本,编辑菜单用户输入菜单列表中的某个数字,显示相应价格。

#!/bin/bash
#------------------------------------------
#Filename:caidan.sh
#Date:2017-09-10
#Author:liuke
#Description:编辑菜单用户输入菜单列表中的某个数字,显示相应价格。
#-------------------------------------------
echo"1=yangroutang
2=mifan
3=hulatang
4=jiaozi
5=lamian
6=huimian"
read-p"pleaseinputyourchoosenum:"num
case$numin
1|4)
echo"thepriceis20¥"
;;
2|5)
echo"thepriceis12¥"
;;
3|6)
echo"thepriceis10¥"
;;
*)
echo"errorchoose"
esac

17、编写脚本,实现打印国际象棋棋盘

#!/bin/bash
#------------------------------------------
#Filename:chess11.sh
#Date:2017-09-11
#Author:liuke
#Description:棋盘
#-------------------------------------------
for((i=1;i<=8;i++));do
for((j=1;j<=8;j++));do
total=$(($i+$j))
tmp=$(($total%2))
if[$tmp-eq0]
then
echo-e-n"\033[43m\033[0m"
else
echo-e-n"\033[41m\033[0m"
fi
done
echo
done

猜你在找的Bash相关文章