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。。。。。
:victory: 不错
页:
[1]