一、循环语句
1.1for
help for 帮助文档
for i in a b c;do echo hello;done
[root@localhost data]#for i in a b c;do echo hello;done
hello
hello
hello
for i in a b c;do echo $i;done
[root@localhost data]#for i in a b c;do echo $i;done
a
b
c
[root@localhost data]#for i in {1..10};do echo $i;done
1
2
3
4
5
6
7
8
9
10
#求1-100的和
#!/bin/bash
sum=0
for i in {1..100}
do
sum=$[i+sum]
done
echo $sum
[root@localhost data]#bash for.sh
55
[root@localhost data]#bash -x for.sh
+ sum=0
+ for i in '{1..10}'
+ sum=1
+ for i in '{1..10}'
+ sum=3
+ for i in '{1..10}'
+ sum=6
+ for i in '{1..10}'
+ sum=10
+ for i in '{1..10}'
+ sum=15
+ for i in '{1..10}'
+ sum=21
+ for i in '{1..10}'
+ sum=28
+ for i in '{1..10}'
+ sum=36
+ for i in '{1..10}'
+ sum=45
+ for i in '{1..10}'
+ sum=55
+ echo 55
55
#!/bin/bash
sum=0
for i in {1..100}
do
let=$[i+sum]
done
echo $sum
#!/bin/bash
sum=0
for i in {1..100}
do
let sum+=i
done
echo $sum
#1-10的奇数
for i in {1..10..2}
#1-100的偶数
for i in {0..10..2}
[root@localhost data]#for i in {1..10..2};do echo $i;done
1
3
5
7
9
[root@localhost data]#for i in {0..10..2};do echo $i;done
0
2
4
6
8
10
#1-10的奇数
for i in `seq 1 2 10`
#1-100的偶数
for i in `seq 0 2 10`
[root@localhost data]#for i in `seq 1 2 10`;do echo $i;done
1
3
5
7
9
[root@localhost data]#for i in `seq 0 2 10`;do echo $i;done
0
2
4
6
8
10
#类C语言风格求1-100的和
#!/bin/bash
sum=0
for ((i=0;i<=100;i++))
do
sum=$[i+sum]
done
echo $sum
#九九乘法表
#!/bin/bash
for i in {1..9}
do
echo -e "*\c"
done
[root@localhost data]#bash for.sh
*********[root@localhost data]#
#!/bin/bash
for j in {1..9}
do
for i in {1..9}
do
echo -e "*\c"
done
echo
done
[root@localhost data]#bash for.sh
*********
*********
*********
*********
*********
*********
*********
*********
*********
#!/bin/bash
for j in {1..9}
do
for i in `seq $j`
do
echo -e "*\c"
done
echo
done
[root@localhost data]#bash for.sh
*
**
***
****
*****
******
*******
********
*********
#!/bin/bash
for j in {1..9}
do
for i in `seq $j`
do
echo -e "${i}*${j}=`echo $[i*j]`\t\c"
done
echo
done
[root@localhost data]#bash for.sh
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
[root@localhost opt]#touch file{1..10}.txt
[root@localhost opt]#for i in * ;do echo $i ;done
file10.txt
file1.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
#批量修改名字格式
[root@localhost /]#cd /data
[root@localhost data]#touch file{1..10}.sh
[root@localhost data]#ls
file10.sh file1.sh file2.sh file3.sh file4.sh
file5.sh file6.sh file7.sh file8.sh file9.sh
[root@localhost data]#cd /opt
[root@localhost opt]#vim gm.sh
#!/bin/bash
cd /data
for i in *
do
zimu=`echo $i|awk -F'[0-9]+' '{print $1}' `
num=`echo $i|grep -Eo '[0-9]+'`
mv $i ${num}${zimu}.jpg
done
[root@localhost opt]#bash gm.sh
[root@localhost opt]#cd /data
[root@localhost data]#ls
10file.jpg 2file.jpg 4file.jpg 6file.jpg 8file.jpg
1file.jpg 3file.jpg 5file.jpg 7file.jpg 9file.jpg
#批量添加用户
#用户名存放在user.txt文件中,每行一个
#初始密码均为123456
[root@localhost opt]#cd /data
[root@localhost data]#vim user.txt
[root@localhost opt]#vim useradd.sh
#!/bin/bash
for i in `cat /data/user.txt`
do
useradd $i
echo 123456|passwd $i --stdin
done
[root@localhost opt]#bash useradd.sh
useradd:用户“zhangsan”已存在
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“lisi”已存在
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“wangwu”已存在
更改用户 wangwu 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“zhaoqi”已存在
更改用户 zhaoqi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
#添加10个用户
[root@localhost opt]#vim useradd.sh
#!/bin/bash
for i in {1..10}
do
useradd test${i}
echo 123456|passwd $i --stdin
done
[root@localhost opt]#bash useradd.sh
passwd:未知的用户名 1。
passwd:未知的用户名 2。
passwd:未知的用户名 3。
passwd:未知的用户名 4。
passwd:未知的用户名 5。
passwd:未知的用户名 6。
passwd:未知的用户名 7。
passwd:未知的用户名 8。
passwd:未知的用户名 9。
passwd:未知的用户名 10。
#根据ip地址检查主机状态
#ip地址存放在ipadds.txt文件中,每行一个
#使用ping