shell脚本大全(shell脚本大全图片)

小编:饿狼 更新时间:2022-08-20

一、根据执行命令时输入的文件地址,打印文件下的所有目录


#首先创建一个sh文件:touch sh02.sh#授予执行权限: chmod +x sh02.sh编辑sh02文件:#vim sh02.sh


1、使用ls打印目录


#根据用户输入的目录遍历此目录下的所有文件ls -l $1#执行1./sh02.sh /#执行2./sh02.sh /etc


2、tree


#根据用户输入的目录遍历此目录下的所有文件tree $1#执行1./sh02.sh /#执行2./sh02.sh /etc


二、备份文件


tar -czvpf log.tar.gz $1#执行./sh02.sh /yhj/


三、定时执行


1、实例


echo '11111'#编写计划任务,执行备份脚本crontab -e#每分钟执行,执行成功保存到log.log文件中,失败保存到error.txt * * * * * sh /yhj/sh/sh02.sh >>/yhj/sh/log.log 2>>/yhj/sh/error.txt#查看计划任务crontab -l


四、内存和空间检测脚本


#提取根分区剩余空间disk_size=$(df / | awk '/\//{print $4}')#提取内存剩余空间mem_size=$(free | awk '/Mem/{print $4}')if [ $disk_size -gt 1200 ]then echo "空间正常:$disk_size"else echo "空间警告:$disk_size"fiif [ $mem_size -gt 12000000000000000 ]then echo "内存正常:$mem_size"else echo "内存警告:$mem_size"fi


五、猜数字游戏


# RANDOM 为系统自带的系统变量,可以生成 0‐32767范围内的随机数# 使用取余算法将随机数变为 1‐100 的随机数num=$[RANDOM%100+1]echo "系统生成的随机数为:$num" # 使用 read 提示用户猜数字# 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小于等于)while :do read -p "系统生成了1-100的随机数,请输入您猜的数字:" cai if [ $cai -eq $num ] then echo "您太厉害了,竟然猜对了" exit elif [ $cai -gt $num ] then echo "猜大了小点行不行" else echo "猜小了慷慨点好不好" fidone


六、用户身份判断


if [ $USER == 'root' ]then echo "是超级管理员root用户"else echo "不是超级管理员,用户是$USER"fi


七、添加用户


#如果用户不输入密码,则统一使用默认的 123456 作为默认密码。read -p "请输入用户名: " user#使用‐z 可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本退出码为 2#没有输入用户名脚本退出后,使用$?查看的返回码为 2if [ -z $user ];then echo "您不需输入账户名" exit 2fi#使用 stty ‐echo 关闭 shell 的回显功能#使用 stty echo 打开 shell 的回显功能stty -echoread -p "请输入密码: " passstty echopass=${pass:123456}useradd "$user"echo "$pass" | passwd ‐‐stdin "$user"


八、输入三个数并进行升序排序


read -p "数字1:" num1read -p "数字2:" num2read -p "数字3:" num3# num1 存最小的值,num2 存中间值,num3 存最大值z=0# 如果 num1 大于 num2,就把 num1 和 num2 的值对调,确保 num1 变量中存的是最小值if [ $num1 -gt $num2 ];then z=$num1 num1=$num2 num2=$zfi# 如果 num1 大于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最小值if [ $num1 -gt $num3 ];then z=$num1 num1=$num3 num3=$zfi# 如果 num2 大于 num3,就把 num2 和 num3 对标,确保 num2 变量中存的是小一点的值if [ $num2 -gt $num3 ];then z=$num2 num2=$num3 num3=$zfiecho "排序后数据(从小到大)为:$num1,$num2,$num3"


九、石头剪刀布


game=(石头 剪刀 布)num=$[RANDOM%3]computer=${game[$num]}# 出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能 echo "请根据提示出手势"echo "1:石头"echo "2:剪刀"echo "3:布" read -p "请选择 1‐3:" personcase $person in1) if [ $num -eq 0 ] then echo "平局加油" elif [ $num -eq 1 ] then echo "你赢啦,真棒" else echo "计算机赢,好遗憾" fi;;2) if [ $num -eq 0 ] then echo "计算机赢,好遗憾" elif [ $num -eq 1 ] then echo "平局加油" else echo "你赢,真棒" fi;;3) if [ $num -eq 0 ] then echo "你赢,真棒" elif [ $num -eq 1 ] then echo "计算机赢,好遗憾" else echo "平局加油" fi;;*) echo "必须输入 1‐3 的数字"esac


十、九九乘法表


# 9*9 乘法表for i in `seq 9`do for j in `seq $i` do echo -n "$j*$i=$[i*j] " done echodone