for循环练习
Posted N64_一只慵懒的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了for循环练习相关的知识,希望对你有一定的参考价值。
1、判断/var/目录下所有文件的类型
\\[21:30:37 root@centos8 leizi][#cat filetype.sh
#!/bin/bash
for i in `find /var`
;do if [ -b $i ];then
echo "$i是块设备文件"
elif [ -c $i ];then
echo "$i是字符设备文件"
elif [ -d $i ];then
echo "$i是目录文件"
elif [ -f $i ];then
echo "$i是普通文件"
elif [ -h $i ];then
echo "$i是符号链接文件"
elif [ -p $i ];then
echo "$i是命名管道文件"
elif [ -s $i ];then
echo "$i是套接字文件"
else
echo "文件不存在"
fi
done
2、添加10个用户user1-user10,passwd为8位随机字符
[21:34:22 root@centos8 leizi][#cat user_for.sh
#!/bin/bash
for i in 1..10;do
useradd user$i
PASS=`cat /dev/urandom | tr -dc "[:alnum:]" | head -c8`
echo $PASS | passwd --stdin user$i &> /dev/null
echo user$i:$PASS >> /data/user.log
echo "user$i is created"
done
3、/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的输出为文件加stop,以S开头的输出为文件名加start,如K34filename stop S66filename start
[22:10:42 root@centos8 leizi][#cat rc_rename.sh
#!/bin/bash
DIR=/etc/rc.d/rc3.d/
for FILE in `ls $DIR`
;do
PRE=`echo $FILE | grep -o "^."`
case $PRE in
S)
echo $FILE start
;;
K)
echo $FILE stop
;;
esac
done
4、编写脚本,提示输入正整数n的值,计算1+2+…+n的总和
[22:23:15 root@centos8 leizi][#cat str_for.sh
#!/bin/bash
read -p "请输入正整数n的值:" STR
sum=0
for i in `seq $STR`
;do
let sum+=i
done
echo "1+2+.....+n的值是sum=$sum"
5、计算100以内所有能被3整除的整数之和
[22:36:26 root@centos8 leizi][#cat str%3_for.sh
#!/bin/bash
sum=0
for (( n=1;n<=100;n++));do
if let $n%3==0;then
let sum+=$n
fi
done
echo $sum
6、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态
[22:51:12 root@centos8 leizi][#cat scan_host_for.sh
#!/bin/bash
read -p "请输入网络地址:" IP
#IP=
NET=`echo $IP|grep -Eo "([0-9]1,3\\.)3[0-9]1,3"`
for ID in $NET;do
ping -c1 -w1 $ID &> /dev/null && echo $ID is up | tee -a host_list.log || echo $ID is down
&
done
wait
7、打印九九乘法表
\\[22:52:23 root@centos8 leizi][#cat 9x9_for.sh #!/bin/bash #
for ((i=1;i<=9;i++));do
for ((j=1;j<=i;j++));do
printf "\\E[1;$[RANDOM%7+31]m$jx$i=$[j*i]\\E[0m\\t"
done
printf "\\n"
done
8、在/testdir目录下创建10个html文件,文件名格式为数字N(从1到10)加随机8个字母,如:1AbCdeFgH.html
[23:11:25 root@centos8 leizi][#cat touch_html.sh
#!/bin/bash
DIR=/data/testdir/
HTML=.html
alnum=`cat /dev/urandom |tr -dc "[:alnum:]" | head -c 8`
for N in 1..10;do
cd $DIR
touch $N$alnum$HTML
done
9、打印等腰三角形
[23:29:10 root@centos8 leizi][#cat triangle_for.sh
#!/bin/bash
read -p "请输入等腰三角形的行数:" line
for ((i=1;i<=line;i++));do
for ((k=0;k<=line-i;k++));do
echo -e " \\c"
done
for ((j=1;j<=2*i-1;j++));do
echo -e "*\\c"
done
echo
done
10、猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。求第一天共摘了多少?
[23:54:44 root@centos8 leizi][#cat peach_for.sh
#!/bin/bash
let a=1 b=1
for ((i=9;i>0;i--));do #天天递减,倒退计算
let b=2*\\(b+1\\) #计算每天吃桃数
let a=b+a #计算吃桃总数
done
printf %s "第一天共摘了$a个桃子"
echo
以上是关于for循环练习的主要内容,如果未能解决你的问题,请参考以下文章