用shell实现,把一个文本文档中只有一个数字的行给打印出来。文件名 filename #!/bin/bash while read line do n=echo $line |sed 's/[^0-9]//g'| wc -L if [ $n -eq 1 ] then echo $line fi done < filename

系统logrotate工具,可以完成日志切割、归档。写一个shell脚本实现类似的归档功能。 举例: 假如服务的输出日志是1.log,要求每天归档一个,1.log第二天就变成1.log.1,第三天1.log.2, 第四天 1.log.3 一直到1.log.5。

#!/bin/bash cd /data/logs log=1.log mv_log() { [ -f $1 ] && mv $1 $2 } [ -f 1.log.5 ] && rm -f 1.log.5 for i in seq 4 -1 1 do j=$[$i+1] mv_log $log.$i $log.$j done mv 1.log 1.log.1

写一个shell脚本,把192.168.0.0/24网段在线的ip列出来。 #!/bin/bash for i in seq 1 254 do if ping -c 2 -W 2 192.168.0.$i >dev/null 2>dev null # -c 指定ping的次数 -W 超时时间 sthen echo "192.168.0.$i 通" else echo "192.168.0.$i 不通" fi done

写一个shell脚本,检查指定的shell脚本是否有语法错误,若有错误,首先显示错误信息,然后提示用户输入q或者Q退出脚本,输入其他内容则直接用vim打开该shell脚本。

#!/bin/bash sh -n $1 2>/tmp/sh.err if [ $? -ne 0 ] then cat /tmp/sh.err read -p "请输入q/Q退出脚本。" c if [ -z "$c"] then vim $1 exit 0 fi if [ $c == q ] || [ $c == Q ] then exit 0 else vim $1 exit 0 fi else echo "脚本$1没有语法错误." fi

输入一串随机数字,然后按千分位输出。 比如输入数字串为“123456789”,输出为123,456,789

#!/bin/bash n=echo $1|wc -L for d in echo $1|sed 's/./& /g' do n2=$[$n%3] if [ $n2 -eq 0 ] then echo -n ",$d" else echo -n "$d" fi n=$[$n-1] done |sed 's/^,//' echo