shell脚本大全(一)

x33g5p2x  于2021-12-16 转载在 Shell  
字(2.7k)|赞(0)|评价(0)|浏览(843)

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

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

1、使用ls打印目录

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

2、tree

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

二、备份文件

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

三、定时执行

1、实例

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

四、内存和空间检测脚本

  1. #提取根分区剩余空间
  2. disk_size=$(df / | awk '/\//{print $4}')
  3. #提取内存剩余空间
  4. mem_size=$(free | awk '/Mem/{print $4}')
  5. if [ $disk_size -gt 1200 ]
  6. then
  7. echo "空间正常:$disk_size"
  8. else
  9. echo "空间警告:$disk_size"
  10. fi
  11. if [ $mem_size -gt 12000000000000000 ]
  12. then
  13. echo "内存正常:$mem_size"
  14. else
  15. echo "内存警告:$mem_size"
  16. fi

五、猜数字游戏

  1. # RANDOM 为系统自带的系统变量,可以生成 0‐32767范围内的随机数
  2. # 使用取余算法将随机数变为 1‐100 的随机数
  3. num=$[RANDOM%100+1]
  4. echo "系统生成的随机数为:$num"
  5. # 使用 read 提示用户猜数字
  6. # 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小于等于)
  7. while :
  8. do
  9. read -p "系统生成了1-100的随机数,请输入您猜的数字: " cai
  10. if [ $cai -eq $num ]
  11. then
  12. echo "您太厉害了,竟然猜对了"
  13. exit
  14. elif [ $cai -gt $num ]
  15. then
  16. echo "猜大了小点行不行"
  17. else
  18. echo "猜小了慷慨点好不好"
  19. fi
  20. done

六、用户身份判断

  1. if [ $USER == 'root' ]
  2. then
  3. echo "是超级管理员root用户"
  4. else
  5. echo "不是超级管理员,用户是$USER"
  6. fi

七、添加用户

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

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

  1. read -p "数字1:" num1
  2. read -p "数字2:" num2
  3. read -p "数字3:" num3
  4. # num1 存最小的值,num2 存中间值,num3 存最大值
  5. z=0
  6. # 如果 num1 大于 num2,就把 num1 和 num2 的值对调,确保 num1 变量中存的是最小值
  7. if [ $num1 -gt $num2 ];then
  8. z=$num1
  9. num1=$num2
  10. num2=$z
  11. fi
  12. # 如果 num1 大于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最小值
  13. if [ $num1 -gt $num3 ];then
  14. z=$num1
  15. num1=$num3
  16. num3=$z
  17. fi
  18. # 如果 num2 大于 num3,就把 num2 和 num3 对标,确保 num2 变量中存的是小一点的值
  19. if [ $num2 -gt $num3 ];then
  20. z=$num2
  21. num2=$num3
  22. num3=$z
  23. fi
  24. echo "排序后数据(从小到大)为:$num1,$num2,$num3"

九、石头剪刀布

  1. game=(石头 剪刀 布)
  2. num=$[RANDOM%3]
  3. computer=${game[$num]}
  4. # 出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能
  5. echo "请根据提示出手势"
  6. echo "1:石头"
  7. echo "2:剪刀"
  8. echo "3:布"
  9. read -p "请选择 1‐3:" person
  10. case $person in
  11. 1)
  12. if [ $num -eq 0 ]
  13. then
  14. echo "平局加油"
  15. elif [ $num -eq 1 ]
  16. then
  17. echo "你赢啦,真棒"
  18. else
  19. echo "计算机赢,好遗憾"
  20. fi;;
  21. 2)
  22. if [ $num -eq 0 ]
  23. then
  24. echo "计算机赢,好遗憾"
  25. elif [ $num -eq 1 ]
  26. then
  27. echo "平局加油"
  28. else
  29. echo "你赢,真棒"
  30. fi;;
  31. 3)
  32. if [ $num -eq 0 ]
  33. then
  34. echo "你赢,真棒"
  35. elif [ $num -eq 1 ]
  36. then
  37. echo "计算机赢,好遗憾"
  38. else
  39. echo "平局加油"
  40. fi;;
  41. *)
  42. echo "必须输入 1‐3 的数字"
  43. esac

十、九九乘法表

  1. # 9*9 乘法表
  2. for i in `seq 9`
  3. do
  4. for j in `seq $i`
  5. do
  6. echo -n "$j*$i=$[i*j] "
  7. done
  8. echo
  9. done

相关文章