1、循环
# /bin/bash i=1 while [1]; do sleep 1 service xxx status if [$? == 0]; then echo "status" exit 1 fi service xxx start done
#!/bin/bash i = 1 for i in {1..5000} do echo ------$i------ done
2、循环读取数组
configs=(a1 a2 a3 a4) for conf in ${configs[@]} do done
len=${#configs[@]}
entry=${configs[$i]}
3、字符串对比
if [ "$service"x = "$service2"x ]; then fi
4、读取文件循环行
#!/bin/bash cat $1 | while read line do patch -p1 -i ../$line done
5、i自增
let i+=1 echo $i
6、判断相等和不相等
if [ $i -eq 10000]; then fi
if [ $i -ne 0]; then
fi
7、统计行数
j=`cat /var/log/messages.log | grep "xxx" | wc -l`
8、统计c代码行数
find . -name "*.c"|xargs cat|grep -v -e '^$' -e '^s*//.*$' -e '^s*/*.*$' -e '^s**.*$' | wc -l
find . -name "*.h"|xargs cat|grep -v -e '^$' -e '^s*//.*$' -e '^s*/*.*$' -e '^s**.*$' | wc -l
排除文件中空格行,排除注释行,统计的真实代码行数
9、awk获取服务的进程ID
pid=`service xx status | grep Main | awk '{print $3}'`
10、当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次,如下命令实现杀死 某个关键字A的所有进程
ps -ef | grep A | grep -v 'grep' | awk '{print $2}' | xargs -I % kill -9 %
11、批量scp文件
#!/bin/bash cat $1 | while read line do dir=${line%/*} mkdir -p $dir ./cp-passwd $line $dir done cp-passwd #!/bin/expect set file [lindex $argv 0] set dir [lindex $argv 1] spawn scp $file root@9.71.5.95:$dir/ set timeout 30 expect "password:" send "Huawei@CLOUD8! " expect eof
12、获取rpm包名称,并创建文件目录,解压rpm源码包
#!/bin/bash dir=`pwd` src=centos_7.3_src rpm=centos_7.3_rpm cat $1 | while read src_rpm do rpm_name=${src_rpm%-*} rpm_name=${rpm_name%-*} echo $rpm_name cd $dir/$rpm if [ $? -ne 0 ];then echo 'cd $dir/$rpm is failed' break fi mkdir $rpm_name && cd $rpm_name if [ $? -ne 0 ]; then echo 'mkdir $rpm_name && cd $rpm_name is failed' break fi rpm2cpio $dir/$src/$src_rpm | cpio -id > /dev/null 2>&1 done
13、查看安装版本中是否已经包含所有rpm列表中的包
#!/bin/bash RPM= cat $1 | while read line do RPM=$(echo $line | awk -F "." '{print $1}') >/dev/null rpm -qa | grep $RPM > /dev/null if [ $? -ne 0 ]; then echo $line fi done
14、生成一个大文件
dd if=/dev/zero of=large_file_in bs=1K count=1