5. shell程序控制

1. 运算符解释

1.1 算数运算符

运算符解释
-eq相等
-gt大于
-lt小于
-ge大于等于
-le小于等于
-ne不等于

1.2 字符串比较

字符串比较解释
==相等
!=不等于
-n字符串长度是否大于0
-z字符串长度是否等于0

1.3 文件比较与检查

test -e /tmp/abc
参数解释
-e检查文件是否存在
-d检查文件是否存在且为目录
-f检查文件是否存在且为文件
-r检查文件是否存在且可读
-s检查文件是否存在且不为空
-w检查文件是否存在且可写
-x检查文件是否存在且可执行
-O检查文件是否存在且被拥有
file1 -nt file2文件1比文件2新
file1 -ot file2文件1比文件2旧

2. if判断

2.1 if语句

if [ condition ]
    then
        command1
    else
        command2
fi
################方法1##############
if [ $1 -eq $2 ]
    then
        echo "NUM1 == NUM2"
else
    if [ $1 -gt $2 ]
        then
            echo "NUM1>NUM2"
    else
        echo "NUM1<=NUM2"
    fi
fi

################方法2##############
if [ $1 -eq $2 ]
    then
        echo "NUM1 == NUM2"
elif [ $1 -gt $2 ]
    then
        echo "NUM1>NUM2"
else
    echo "NUM1<=NUM2"
fi

2.2 if高级用法

  1. 双圆括号内可以写数学表达式
if (( 100%3+1>1 ));then
	echo ""
else
	echo ""
fi
  1. 双方括号可以做字符串匹配

3. for循环

3.1 for语法

## type1
for i in 1 2 3 4 5 6 7 8 9
    do
    	echo $i
    	sleep 1
done


## type2
for (( a=0;a<9;++a ))
	do
		echo $a
		sleep 1
done

3.2 样例1-判断IP节点有效

#ping -c1 表示只发送一个icmp包
for ((;;))
	do
		ping -c1 $1 &>/dev/null
		if [ $? -eq 0]
			then
				echo "`date +"%F %H:%M:S"`: $1 is up"
		else
				echo "`date +"%F %H:%M:S"`: $1 is down"
		fi
		sleep 10
done
		

4. continue和break

for(( i=1;i<9;i++ ))
	do
		if [ $i -eq 5];then
			continue
		fi
		if [ $i -eq 8];then
			break
		fi
		echo "$i"
done

4.1 break跳出外循环

for (( i=1;i<100;++i ))
	do
		for(( j=1;j<10;++j ))
			break 2
		done
done

4.2 扫描网段哪些是活的


5. while循环控制

#while [ cond ]
#	do
#		command
#done
read -p "login: " account
while [$account == "admin"] || [ $account == "root" ]
	do
		read -p "login: " account
done

6. until语句

和while正好相反,条件为假开始执行,类似于do while

语法:

until [ cond ]
	do
		command
done

7. case语句

语法:

read -p "NUM: "num
case $num in
1)
	echo "hh"
;;
2)
	echo "hehe"
;;
3)
	echo "gg"
;;
*)
	echo "bye"
;;
esac
case $1 in
zmn|ZMN)
	echo "bmh"
;;
lzr|LZR)
	echo "lzrh"
;;
*)
	echo "nh"
;;
esac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值