if
格式1:
if 判断条件
then
判断为true执行的代码
fi
格式2:
if 判断条件
then
判断为true执行的代码
else
判断为false执行的代码
fi
格式3:
if 判断条件
then
判断为true执行的代码
elif 判断条件
then
判断为true执行的代码
。。。
else
判断为false执行的代码
fi
#!/bin/sh
score=56
if [ $score \= 100 ]
then
echo "休息三天"
elif [ $score -ge 60 ]
then
echo "加紧学习"
else
echo "好好复习"
fi
[root@master shell]# vim h.sh
[root@master shell]# sh h.sh
好好复习
注意:else可加可不加
判断条件的写法
[]:[]两边加空格,符号两边加空格并且符号前加转义符
可以使用字母
[[]]:[[]]两边加空格,符号两边加空格
可以使用字母
():弃用
(()):不需要加空格,但是不能使用字母
在使用变量时,不需要使用$
for
java格式:
for ((初始化变量;判断条件;控制语句))
do
执行语句
done
#!/bin/sh
for((i=1;i<100;i++))
do
echo "a${i}"
done
[root@master shell]# vim g.sh
[root@master shell]# sh g.sh
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
#!/bin/sh
osum=0
jsum=0
for((i=1;i<=100;i++))
do
if ((i%2==0))
then
osum+=${i}
else
jsum+=${i}
fi
done
echo $osum
echo $jsum
[root@master shell]# vim i.sh
[root@master shell]# sh i.sh
02468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100
013579111315171921232527293133353739414345474951535557596163656769717375777981838587899193959799
#osum+=${i} 结果做了拼接 不是算术运算
python格式:
for 变量 in 结果集
do
执行语句
done
结果集:
{开始..结束}含头含尾,不能引用变量
#!/bin/sh
end=100
for i in {1..$end}
do
echo "$i"
done
[root@master shell]# vim j.sh
[root@master shell]# sh j.sh
{1..100}
`seq 开始 结束`含头含尾
#!/bin/sh
end=100
for i in `seq 1 $end`
do
echo "$i"
done
[root@master shell]# vim j.sh
[root@master shell]# sh j.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
例如:获取1-100的奇数和偶数和
jsum=0
osum=0
for i in {1..100}
do
if ((${i}%2==0))
then
#osum+=${i} 结果做了拼接 不是算术运算
#osum=`expr ${i} + ${osum}`
#osum=$[${i}+${osum}]
let osum+=i
else
let jsum+=i
fi
done
echo 偶数和为:${osum}
echo 奇数和为:${jsum}
#!/bin/sh
osum=0
jsum=0
for i in `seq 1 100`
do
if ((i%2==0))
then
osum=`expr ${i} + ${osum}`
else
jsum=`expr ${i} + ${jsum}`
fi
done
echo $osum
echo $jsum
#
echo "-------------------------------"
#
osum=0
jsum=0
for i in `seq 1 100`
do
if ((i%2==0))
then
osum=$[${i}+${osum}]
else
jsum=$[${i} + ${jsum}]
fi
done
echo $osum
echo $jsum
#
echo "-------------------------------"
#
[root@master shell]# vim ab.sh
[root@master shell]# sh ab.sh
2550
2500
-------------------------------
2550
2500
-------------------------------
注意:
使用let在计算时可以直接使用变量
#!/bin/sh
#求一个数是不是水仙花数
x=123
i=$[x/100]
j=$[x/10%1]
k=$[x%100]
end=$[i*i*i+j*j*j+k*k*k]
if ((x==end))
then
echo $x是水仙数
else
echo $x不是水仙数
fi
#9*9乘法表
for i in `seq 1 9`
do
for j in `seq 1 $i`
do
echo -n " $j*$i=$[j*i]"
done
echo ""
done
[root@master shell]# vim k.sh
[root@master shell]# sh k.sh
123不是水仙数
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
#!/bin/sh
#求素数
for i in `seq 1 100`
do
flag=1
for j in `seq 2 $[i-1]`
do
if ((i%j==0))
then
flag=0
break
fi
done
if ((flag==1))
then
echo $i
fi
done
[root@master shell]# vim l.sh
[root@master shell]# sh l.sh
1
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
数组:存储多个元素,数据类型可以不同,元素元素之间以空格切分
操作
通过下标获取数据
格式:
${数组[下标]}
注意:
直接引用数组变量,默认获取下标为0的元素
下标使用*表示获取所有
获取长度:
格式:
${#数组[*]}
#!/bin/sh
arr=(a b c d e f g h i j)
echo $arr
echo ${arr[*]}
echo ${arr[1]}
echo ${#arr[*]}
[root@master shell]# vim n.sh
[root@master shell]# sh n.sh
a
a b c d e f g h i j
b
10
read:键盘录入
格式:
read 变量1 变量2 ...变量n
注意:
键盘录入时,允许给多个变量进行赋值,值和值之间以空格切分
#!/bin/sh
read x y
echo $x
echo $y
[root@master shell]# vim m.sh
[root@master shell]# sh m.sh
zbc def
zbc
def
[root@master shell]# sh m.sh
acdsfr
acdsfr
[root@master shell]#
打印三角形
for i in {1..5}
do
for j in `seq 1 ${i}`
do
echo -n "* "
done
echo ""
done
#!/bin/sh
#打印正三角形
for i in `seq 1 10`
do
for j in `seq 1 $i`
do
echo -n "* "
done
echo ""
done
#
echo "---------------------------------"
#
#打印倒三角形
for i in `seq 1 10`
do
for j in `seq 1 $[10-i]`
do
echo -n "* "
done
for k in `seq 1 $[i-1]`
do
echo -n ""
done
echo ""
done
[root@master shell]# vim aa.sh
[root@master shell]# sh aa.sh
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
---------------------------------
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
#!/bin/sh
#打印左上角三角形
for i in `seq 1 10`
do
for j in `seq 1 $[11-i]`
do
echo -n "* "
done
echo ""
done
#
echo "---------------------------------"
#
#打印右下角三角形
for i in `seq 1 10`
do
for j in `seq 1 $i`
do
echo -n "* "
done
for k in `seq 1 $[10-i]`
do
echo -n ""
done
echo ""
done
[root@master shell]# vim bb.sh
[root@master shell]# sh bb.sh
* * * * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
---------------------------------
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *