if_for_while.sh
#!/bin/bash
#判断crond进程是否运行
NAME=crond
NUM=$( ps aux |grep $NAME |grep -vc grep )#去除grep进程
if [ $NUM -eq 1 ]; then
echo "$NAME running."
else
echo "$NAME is not running!"
fi
#判断是否能够ping通51cto.com
#if语句可以直接对命令状态进行判断,就省去了获取$?这一步!
if ping -c 2 51cto.com > /dev/null ;then
echo "ok"
else
echo "no"
fi
#if... then ... elif... then... else... fi
#循环列表
for i in {1..3};do
echo -n $i
done
echo
#for 循环目录
for i in `ls /`;do
echo $i
done
#默认for循环的取值列表是以空白符分隔
for i in 1 2 3 4 5 6 7;do
echo -n $i
done
echo
#如果要指定分隔符,可以重新赋值$IFS变量
old_IFS=$IFS
IFS=":"
for i in $(head -1 /etc/passwd);do
echo -n $i
done
IFS=$old_IFS
echo
#for语句的C语言风格
for ((i=0;i<=5;i++));do
echo -n $i
done
echo
#检查多个主机是否存活
for ip in 192.168.217.{1..3};do
if ping -c 1 $ip >/dev/null;then
echo "$ip ok"
else
echo "$ip no!"
fi
done
#while语句
#break
n=0
echo "break:"
while true;do
let n++
if [ $n -eq 5 ];then
break
fi
done
#continue
n=0
while [ $n -lt 5 ];do
let n++
if [ $n -eq 4 ];then
continue
fi
echo $n
done
#while循环按行读取文件
cat a.txt |
while read line;do
echo $line
sleep 1
done
#重定向读取
while read line;do
echo $line
sleep 1
done < a.txt
#for循环读取
old_IFS=$IFS
IFS="\n"
for i in `cat a.txt`;do
echo $i
sleep 1
done
IFS=$old_IFS
#case条件分支
[ $# -ne 1 ] && echo 'error1' && exit #传入的参数个数不等于1
choice=$1
start(){
echo "start"
}
stop(){
echo "stop"
}
restart(){
echo "restart"
}
case $choice in
start|1)#start 或者 1 皆可
start ;; #两个分号
stop|2)
stop ;;
restart|3)
restart ;;
*)
echo 'error2'
esac #与if类似
在执行这个脚本的时候,想让它停止执行,于是再打开一个终端,输入
ps aux | grep if_for.sh #找到进程的PID
kill PID