shell array if while for基本用法
#定义数组
array=("10.101.164.138" "10.101.163.38" "10.101.163.30" "10.101.160.81" "10.101.164.132" "10.101.163.13" "10.101.163.34")
array[7]="10.101.164.199"
echo "${array[7]}" #输出数组长度
echo ${#array[@]}
#遍历数组中每个元素 for i in ${array[@]} do echo $cs if [ $? -ne 0 ] then echo "echo fail!!!!" fi done #每1min检查一次filename的文件中是否有"SAFE"关键词
key="SAFE" while (true) do cs_status=`cat filename`
#检查是否包含关键词key echo "$cs_status" | grep -q "$key" if [ $? -eq 0 ] then
#存在该关键词就输出时间,否则break echo `date` else echo $cs_status; break fi sleep 60 done
其他
读变量 [admin@rs1c04265 /home/admin] $read atest i want to eat duck [admin@rs1c04265 /home/admin] $echo $atest i want to eat duck 取消变量 [admin@rs1c04265 /home/admin] $unset atest [admin@rs1c04265 /home/admin] $echo $atest 不指定类型即为字符串 [admin@rs1c04265 /home/admin] $sum=100+100 [admin@rs1c04265 /home/admin] $echo $sum 100+100 declare制定类型 [admin@rs1c04265 /home/admin] $declare -i sum=100+100 [admin@rs1c04265 /home/admin] $echo $sum 200 让sum变成环境变量 [admin@rs1c04265 /home/admin] $declare -x sum [admin@rs1c04265 /home/admin] $export|grep sum declare -ix sum="200" 让sum只读 [admin@rs1c04265 /home/admin] $declare -r sum [admin@rs1c04265 /home/admin] $sum=adada bash: sum: readonly variable 这里可以是-x或+x [admin@rs1c04265 /home/admin] $declare -x sum [admin@rs1c04265 /home/admin] $declare -p sum declare -irx sum="200" env 观察环境变量 export 自定义环境变量 which 查找指令 locale 看linux机器编码,例如utf-8
整数比较
-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
字符串比较
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
注意: [[]]和[]中的行为在某些情况下是不同的:
[[ $a == z* ]] # 如果$a 以"z"开头(模式匹配)那么将为true
[[ $a == "z*" ]] # 如果$a 等于z* (字符匹配),那么结果为true
[ $a == z* ] # File globbing 和word splitting 将会发生
[ "$a" == "z*" ] # 如果$a 等于z* (字符匹配),那么结果为true