for loops c风格格式
双小括号方法,即((…))格式,也可以用于算术运算
双小括号方法也可以使bash Shell实现C语言风格的变量操作
I=10
((I++))
for循环的特殊格式:
for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
do
循环体
done
控制变量初始化:仅在运行到循环代码段时执行一次
控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做
条件判断
1、判断/var/目录下所有文件的类型
for files in /var/* ;do if [[ -f $files ]];then
echo "$files exists and is a regular file."
elif [[ -h $files ]] ;then
echo "$files is a symbolic link."
elif [[ -d $files ]] ;then
echo "$files is a directory."
else
echo "$files is others."
fi
done
2、添加10个用户user1-user10,密码为8位随机字符
for user in user{1..10} ;do id $user &> /dev/null
if [[ $? -ne 0 ]] ;then
useradd $user
#openssl rand -base64 6 ; uuidgen |cut -c8
pw=`openssl rand -base64 6`
echo $pw|passwd --stdin $user &> /dev/null
echo "user:$user, password : $pw" >> /root/pw_file
else
echo "Error:$user is exsit"
exit
fi
if [ $user == "user10" ] ;then
echo "user is created,password is in /root/pw_File"
fi
done
#删除10个用户
for i in {1..10} ;do userdel -r user$i ;done
for files in /etc/rc.d/rc3.d/[KS]* ;do
if [ `basename $files|cut -c1` == "K" ] ;then
echo "$files stop"
else
echo "$files start"
fi
done
4、编写脚本,提示输入正整数n的值,计算1+2+…+n的总和
read -p "please input a positive integer: " INT
if [[ $INT =~ ^[0-9]+$ ]] && [[ `expr $INT` != 0 ]] ;then
sum=0
for i in `seq $INT`;do
let sum+=i
done
echo "sum=$sum"
else
echo "Error:your input is not positive integer"
fi
5、计算100以内所有能被3整除的整数之和
sum=0
for i in `seq 3 3 100` ;do
let sum+=i
done
echo "sum=$sum"
for((i=3,sum=0; i>/root/ipup.txt
if [ $IPC -eq 0 ] ;then
for IP1 in {0..254} ;do
for IP2 in `seq 254`;do
{
ping -c1 -w1 $IPCHECK$IP1.$IP2 &> /dev/null
[ $? -eq 0 ] && echo "The host $IPCHECK$IP1.$IP2 run up" >> /root/ipup.txt
}&
done
wait
done
else
echo "your IP $IP is not available"
fi
else
echo "your IP $IP format is wrong"
fi
7、打印九九乘法表
for i in {1..9};do for j in `seq $i`;do
echo -en "$i*$j=$(($i*$j))\t"
done
echo
for i in {1..10};do NUM=`openssl rand -base64 6|tr -dc '[:alpha:]' |head -c10`
touch /data/${i}${NUM}.html
done
unset NUM
9、打印等腰三角形
read -p "please input the triangle number: " NUM
for n in `seq $NUM` ;do
{
for a in `seq $[$NUM-$n]` ;do
echo -n " "
done
for b in `seq $[2*$n-1]` ;do
color=$[RANDOM%7+31]
echo -en "\033[1;${color}m*\033[0m"
done
echo
}&
done
1.
2.
3.
4.
5.
6.
7.
8.
9.
while loops
while CONDITION; do
循环体
done
CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后
会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为
“false”终止循环
因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地
被修正
进入条件:CONDITION为true
退出条件:CONDITION为false
while循环的特殊用法(遍历文件的每一行):
while read line; do
循环体
done < /PATH/FROM/SOMEFILE
依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line
for ((i=0;i /dev/null
if [ $? -eq 0 ] ;then
let sumup++
echo "${IPNET}${i}.${j} is up"|tee -a $tmp
fi }&
let j++
done
wait
done
up=`cat $tmp |wc -l`
down=$[65024-$up]
echo "host up is $up"
echo "host down is $down"
3、编写脚本,打印九九乘法表
declare -i i=1
while [ $i -le 9 ] ;do
declare -i j=1
while [ $j -le $i ] ;do
echo -en "${i}x${j}=$(($i*$j))\t"
let j++
done
echo
let i++
done
4、编写脚本,利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大值和最小值
file=/root/rand4.txt
declare -i i=1
if [ ! -f $file ] ;then
>$file
else
rm -f $file
fi
while [ $i -le 10 ] ;do
echo $RANDOM |tee -a $file
let i++
done
echo max `cat $file |sort -nr|head -n1`
echo min `cat $file |sort -nr|tail -n1`
5、编写脚本,实现打印国际象棋棋盘
默认背景色为黑色
clear
while read -p "please input a number(8,16,32,64):" num ;do
if [[ $num =~ ^[0-9]{1,2}$ ]];then
if [ $(($num%8)) -eq 0 ] ;then
break
fi
else
echo "Error:your input is illegal"
fi
for i in `seq $num`;do
for j in {1..4};do
if [[ $(($i%$el)) =~ ^[1-$al]$ ]] ;then
echo -ne "\033[1;47m${space}\033[0m$space"
else
echo -ne "$space\033[1;47m${space}\033[0m"
fi
done
echo