765686189 发表于 2020-3-31 12:00:48

shell脚本注释

本帖最后由 765686189 于 2020-3-31 12:19 编辑

有错的欢迎回帖




10.0_Only_Input_Number.sh
Only_Input_Number.sh死活添加不料代码,看图片或者附件吧!


#以上解释和'例子\10.0_Only_Input_Number.sh'一样,就是封装成方法
#只能输入大于50的数字
read -p "Please input just one number: " v_1

sub_num "$v_1"

if [ "$v_num" -gt 50 ]#gt是大于50
then
echo "OK."
else
until [ "$v_num" -gt 50]
do
   read-p"Because the number is less than/equal to 50, please input just one number again: "   v_1
   sub_num "$v_1"
done
echo "Now OK."
fi
例子\11_RE_Useful_.sh:

#!/bin/sh
# ping -W 一定要加-i, 不然会出现返回值都是1的情况
sub_1() {
ping -q -n -c 10 -W 1 -i 0.01 -w 1 192.168.0.$1 >/dev/null2>&1 #ping主机 带有静默 不转换主机名 总共10个包 超时1ms 包间隔0.01s 应答超时1s 的Buff
if [ $? -eq 0 ]#如果上一个命令返回0则:
then
v_nmap=$(nmap -P0-p 22192.168.0.$1 | grep open | tr -d '[:blank:]')#测试22端口联通性,测试结果清洗空格之后记录变量
if [ ! -z $v_nmap ] #假如变量不是空
then
   echo 192.168.0.$1 >> 11/conclusion.online#输出ip地址到conclusion.online
fi
fi
}
rm -f11/conclusion.online#删除conclusion.online
for i in `seq 1 254`#循环254次,刚好一个/24的ip段
do
sub_1 $i &   #执行子程序1,传入当前循环次数,说白了就是测试联通
done
wait
echo "OK:"      #输出OK
sed 's/$/$/g' 11/conclusion.online > 11/conclusion.online2 #清洗空行
grep -f 11/conclusion.online2 11/conclusion.list #从总表查找在线表,这里应该会输出在线表


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

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

'例子\300_Dynamic_Shell.sh':

#!/bin/sh
[ -d /usr2 ] || mkdir /usr2 #如果/usr2不存在则创建

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

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

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

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

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

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

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

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

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

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

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

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



botang 发表于 2020-3-31 22:28:03

:victory: 不错
页: [1]
查看完整版本: shell脚本注释