awk -F 's=0{} BEGIN{for(i=1;i<=100;i++){s+=i}print s}'
if双分支
awk -F: 'BEGIN{i=0;j=0}{if($3<=500){i++}else{j++}}END{print i,j}' /etc/passwd
for循环
seq 5 生成序列1-5
awk 'BEGIN{for(i=1;i<5;i++){print i}}'
for NUM in 1 2 3
for NUM in `seq 10`
for NUM in 1 2 3 / `seq 10`/ `seq 1 2 10` 开始,间隔,结尾
do
echo $NUM
done
for ((A=1;A<10;A++))
do
echo $A
done
例如
#!/bin/bash
for ((A=0;A<50;A++))
do
ping 172.25.254.$A -c1 -w1>/dev/null&&echo $A up ||echo $A error
done
for i in `seq 60`
for a in {1..60}
倒计时关机
#!/bin/bash
for ((A=10;A>0;A--))
do
echo -n " TIME $A "
echo -ne "\r" #替换上面的
sleep 1
done
时秒倒计时
#!/bin/bash
[ $2 -gt 60 ]&&echo second is error&&exit 1
time=$1*60+$2
for((A=$time;A>0;A--))
do
echo -n " TIME $[$A/60]:$[$A%60] "
echo -ne "\r"
sleep 1
done
while 循环
uptime 开机时间
#!/bin/bash
while true
do
uptime
sleep 2
dome
创建用户
#!/bin/bash
A=20
B=westos
while [ $A -gt 0 ]
do
useradd $B$A &>/dev/null
echo "123456" |passwd --stdin $B$A &>/dev/null
echo $B$A passwd is 123456
let A-=1 ((A--)) $[A--]
done
删除用户
#!/bin/bash
A=20
B=westos
while [ $A -gt 0 ]
do
userdel -r $B$A &>/dev/null
echo "123456" |passwd --stdin $B$A &>/dev/null
echo $B$A passwd is 123456
let A-=1 ((A--)) $[A--]
done
嵌套循环
for (())
do
echo 1
for (())
do
echo 2
done
done
打印乘法表
#!/bin/bash
for ((a=1;a<10;a++))
do
for ((b=1;b<a+1;b++))
do
echo -ne "$b*$a=$[$a*$b]\t"
done
echo
done
或者 for i in `seq 9`
do for j in `i`
do
done
done
其中 echo -n 不换行 里面的\t 为自动对齐table
echo -e 转义
b<a+1 循环次数
$[]
$(())
if-else用法
if ..; then
动作
fi
#!/bin/bash
if [ -e /etc/passwd ];then
echo sasa
fi
#!/bin/bash
if [ -e $1 ];then
echo sasa
elif [ ! -e $1 ];then
echo 22
fi
#!/bin/bash
if [ -e $1 ];then
echo sasa
else
echo 22
fi
字符串比较用== $1
-lt要用比较数字
case 语句
#!/bin/bash
case $1 in
student|kiosk|linux|westos) #这些情况
echo "welcome,$1"
;;
*) #其他情况
echo "sorry!"
;;
esac