Bo's Oracle Station

查看: 1861|回复: 1

shell脚本注释

[复制链接]

7

主题

29

帖子

117

积分

注册会员

Rank: 2

积分
117
发表于 2020-3-31 12:00:48 | 显示全部楼层 |阅读模式
本帖最后由 765686189 于 2020-3-31 12:19 编辑

有错的欢迎回帖




10.0_Only_Input_Number.sh
2020-03-31 12-00-31 的屏幕截图.png Only_Input_Number.sh死活添加不料代码,看图片或者附件吧!

2020-03-31 12-04-45 的屏幕截图.png
  1. #以上解释和'例子\10.0_Only_Input_Number.sh'一样,就是封装成方法
  2. #只能输入大于50的数字
  3. read -p "Please input just one number: " v_1

  4. sub_num "$v_1"

  5. if [ "$v_num" -gt 50 ]  #gt是大于50
  6. then
  7. echo "OK."
  8. else
  9. until [ "$v_num" -gt 50  ]
  10. do
  11.    read  -p  "Because the number is less than/equal to 50, please input just one number again: "     v_1
  12.    sub_num "$v_1"
  13. done
  14. echo "Now OK."
  15. fi
复制代码
例子\11_RE_Useful_[ping].sh:
2020-03-31 12-06-17 的屏幕截图.png
  1. #!/bin/sh
  2. # ping -W 一定要加-i, 不然会出现返回值都是1的情况
  3. sub_1() {
  4. ping -q -n -c 10 -W 1 -i 0.01 -w 1 192.168.0.$1 >/dev/null  2>&1 #ping主机 带有静默 不转换主机名 总共10个包 超时1ms 包间隔0.01s 应答超时1s 的Buff
  5. if [ $? -eq 0 ]  #如果上一个命令返回0则:
  6. then
  7.   v_nmap=$(nmap -P0  -p 22  192.168.0.$1 | grep open | tr -d '[:blank:]')  #测试22端口联通性,测试结果清洗空格之后记录变量
  8.   if [ ! -z $v_nmap ] #假如变量不是空
  9.   then
  10.    echo 192.168.0.$1 >> 11/conclusion.online  #输出ip地址到conclusion.online
  11.   fi
  12. fi
  13. }
  14. rm -f  11/conclusion.online  #删除conclusion.online
  15. for i in `seq 1 254`  #循环254次,刚好一个/24的ip段
  16. do
  17. sub_1 $i &   #执行子程序1,传入当前循环次数,说白了就是测试联通
  18. done
  19. wait
  20. echo "OK:"      #输出OK
  21. sed 's/$/$/g' 11/conclusion.online > 11/conclusion.online2 #清洗空行
  22. grep -f 11/conclusion.online2 11/conclusion.list #从总表查找在线表,这里应该会输出在线表


  23. sed 's/$/$/g' 11/conclusion.list > 11/conclusion.list2 #清洗总表
  24. echo "STANGE: "
  25. grep -v -f  11/conclusion.list2 11/conclusion.online   #从总表排除在线表并输出

  26. echo "NOTONLINE:"
  27. grep -v -f 11/conclusion.online2 11/conclusion.list   #从在线表排除总表并输出
复制代码

'例子\300_Dynamic_Shell.sh':
2020-03-31 12-08-59 的屏幕截图.png
  1. #!/bin/sh
  2. [ -d /usr2 ] || mkdir /usr2 #如果/usr2不存在则创建

  3. find /usr -type f > /tmp/usrflat1  #在/usr中查找普通文件,输出绝对路径,重定向到/tmp/usrflat1

  4. usrflat_v1=`wc -l /tmp/usrflat1 | cut -f 1 -d ' '`  #计算行数并用‘' '间隔,输出第一列存储到变量usrflat_v1,说白了就是统计行数,第二列是文件名,所以不要

  5. echo $usrflat_v1  #输出行数,统计usr目录下有多少普通文件?

  6. seq 1 $usrflat_v1 > /tmp/usrflat2 #生成1到usrflat_v1的序列并输入到/tmp/usrflat2

  7. for i in `seq 1 $usrflat_v1`;do echo "ln -s" >> /tmp/usrflat3;done #循环输出等于usr目录下文件总数个‘ln -s,追加到/tmp/usrflat3

  8. for i in `seq 1 $usrflat_v1`;do echo """ >> /tmp/usrflat4;done      #循环输出等于usr目录下文件总数个‘\,追加到/tmp/usrflat4

  9. paste -d '' /tmp/usrflat4 /tmp/usrflat1 /tmp/usrflat4 > /tmp/usrflat5 #用空格作为分割符号,按列合并文件,输出到/tmp/usrflat5,
  10. #也就是 \ 文件绝对路径名称 \ ,怎么看着像转义?

  11. echo "#!/bin/sh" > /tmp/usrflat6  #输出解释器名称到usrflat6

  12. paste -d ' ' /tmp/usrflat3 /tmp/usrflat5 /tmp/usrflat2 >> /tmp/usrflat6 #用空格作为分割符号,按列合并文件,追加到/tmp/usrflat6,
  13. #看起来像 ln -s \ 文件绝对路径名称 \ 按照被找到的顺序排序生成文件名。。。。

  14. echo "exit" >> /tmp/usrflat6   #输出退出到最终脚本

  15. chmod +x /tmp/usrflat6  #为了最终脚本添加执行位

  16. cd /usr2  #打开/usr2
  17. /tmp/usrflat6 #执行脚本
  18. #最终就是把/usr2的普通文件用数字命名,符号连接一份到/usr2。。。。。
复制代码



栗子.zip

5.28 KB, 下载次数: 47

回复

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2020-3-31 22:28:03 | 显示全部楼层
不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-5-9 20:48 , Processed in 0.036917 second(s), 27 queries .

快速回复 返回顶部 返回列表