正文
))
[
$MIN
-lt
$INT
] && MIN=
$INT
[
$MAX
-gt
$INT
] && MAX=
$INT
let
COUNT++
done
echo
"SUM:
$SUM
"
echo
"MIN:
$MIN
"
echo
"MAX:
$MAX
"
用户猜数字
while :
do
read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai
if [ $cai -eq $num ]
then
echo "恭喜,猜对了"
exit
elif [ $cai -gt $num ]
then
echo "Oops,猜大了"
else
echo "Oops,猜小了"
fi
done
7、监测 Nginx 访问日志 502 情况,并做相应动作
假设服务器环境为 lnmp,近期访问经常出现 502 现象,且 502 错误在重启 php-fpm 服务后消失,因此需要编写监控脚本,一旦出现 502,则自动重启 php-fpm 服务。
#!/bin/bash
log=/data/log/access.log
N=30
while :
do
err=`tail -n 300 $log |grep -c '502" '`
if [ $err -ge $N ]
then
/etc/init.d/php-fpm restart 2> /dev/null
sleep 60
fi
sleep 10
done
8、将结果分别赋值给变量
应用场景:希望将执行结果或者位置参数赋值给变量,以便后续使用。
方法1:
for i in $(echo "4 5 6"); do
eval a$i=$i
done
echo $a4 $a5 $a6
方法2:将位置参数192.168.1.1{1,2}拆分为到每个变量
num=0
for i in $(eval echo $*);do
let num+=1
eval node${num}="$i"
done
echo $node1 $node2 $node3
192.168.1.11 192.168.1.12
方法3:
arr=(4 5 6)
INDEX1=$(echo ${arr[0]})
INDEX2=$(echo ${arr[1]})
INDEX3=$(echo ${arr[2]})
9、批量修改文件名
示例:
目的:把 article 改为 bbs
方法1:
for file in $(ls *html); do
mv $file bbs_${file
方法2:
for file in $(find . -maxdepth 1 -name "*html"); do
mv $file bbs_${file
方法3:
把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母
1)准备测试文件,文件名为2.txt
第1行1234567不包含字母
第2行56789BBBBBB
第3行67890CCCCCCCC
第4行78asdfDDDDDDDDD
第5行123456EEEEEEEE
第6行1234567ASDF
第7行56789ASDF
第8行67890ASDF
第9行78asdfADSF
第10行123456AAAA
第11行67890ASDF
第12行78asdfADSF
第13行123456AAAA
2)脚本如下:
#!/bin/bash
把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母
sed -n '1,5'p 2.txt |sed '/[a-zA-Z]/'d
sed -n '6,10'p 2.txt |sed s'/[a-zA-Z]//'g
sed -n '11,$'p 2.txt
10、统计当前目录中以 .html 结尾的文件总大
方法1:
# find . -name "*.html" -exec du -k {} \; |awk '{sum+=$1}END{print sum}'
方法2: