if,for,数组,read

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
* * * * * * * * * * 
* * * * * * * * * 
* * * * * * * * 
* * * * * * * 
* * * * * * 
* * * * * 
* * * * 
* * * 
* * 
* 
---------------------------------
* 
* * 
* * * 
* * * * 
* * * * * 
* * * * * * 
* * * * * * * 
* * * * * * * * 
* * * * * * * * * 
* * * * * * * * * * 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值