目录

1、运算符

2、流程控制

2.1 If判断

2.2 case语句

2.3 For循环

2.4 while循环

3、Read读取控制台输入


1、运算符

  1. “$((运算式))”或“$[运算式]”
  2. expr  + , - , \*,  /,  %    (分别是加,减,乘,除,取余)

注意expr运算符间要有空格

练习: 

[root@localhost ~]# expr 2 + 3                  
5
[root@localhost ~]# expr `expr 2 + 3` \* 4       //利用expr计算(2+3)*4
20
[root@localhost ~]# S=$[(2+3)*4]                 //采用$[运算符]方式计算
[root@localhost ~]# echo $S
20

2、流程控制

2.1 If判断

if [ 条件判断式 ];then
  程序
fi
或者
if [ 条件判断式 ]
  then
    程序
fi

注意事项:

  • [ 条件判断式 ],中括号和条件判断式之间必须有空格
  • if后要有空格

练习:输入一个数字,如果是1,则输出banzhang zhen shuai,如果是2,则输出cls zhen mei,如果是其它,什么也不输出。

[root@localhost test]# vim if.sh
#!/bin/bash
if [ $1 -eq "1" ];then
        echo banzhang zhen shuai
elif [ $1 -eq "2" ];then
        echo cls zhen mei
fi

[root@localhost test]# bash if.sh 1
banzhang zhen shuai
[root@localhost test]# bash if.sh 2
cls zhen mei
[root@localhost test]# bash if.sh 3

2.2 case语句

case $变量名 in
  "值1")
   如果变量的值等于值1,则执行程序1
    ;;
  "值2")
    如果变量的值等于值2,则执行程序2
    ;;
  …省略其他分支…
  *)
    如果变量的值都不是以上的值,则执行此程序
    ;;
esac

注意事项:

  • case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
  • 双分号“;;”表示命令序列结束,相当于java中的break。
  • 最后的“*)”表示默认模式,注意这里的*没有双引号,相当于java中的default。

练习:输入一个数字,如果是1,则输出banzhang,如果是2,则输出cls,如果是其它,输出renyao。

[root@localhost test]# vim case.sh
#!/bin/bash
case $1 in
        1)
                echo banzhang
                ;;
        2)
                echo cls
                ;;
        *)
                echo renyao
                ;;
esac
[root@localhost test]# bash case.sh 1
banzhang
[root@localhost test]# bash case.sh 2
cls
[root@localhost test]# bash case.sh 4
renyao

2.3 For循环

语法1:

for (( 初始值;循环控制条件;变量变化 ))
  do
    程序
  done

练习:从1加到100 

[root@localhost test]# vim for1.sh
#!/bin/bash
s=0
for (( i=1;i<=100;i++))
do
        s=$[$s+$i]
done
echo $s
[root@localhost test]# bash for1.sh 
5050

语法2:

for 变量 in 值1 值2 值3… 
  do 
    程序 
  done

注:这个语法就是将值1、值2、值3;分别赋给变量进行循环。

练习:打印所有输入参数。

[root@localhost test]# vim for2.sh
#!/bin/bash
for i in $*
do
        echo $i
done
[root@localhost test]# bash for2.sh 1 2 3
1
2
3

比较$*和$@的区别

(1)$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1、$2 …$n的形式输出所有参数。

[root@localhost test]# vim for2.sh
#!/bin/bash
for i in $*
do
        echo $i
done
for j in $@
do
        echo $j
done

[root@localhost test]# bash for2.sh 1 2 3
1
2
3
1
2
3

(2)当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1、$2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数。

[root@localhost test]# vim for2.sh
#!/bin/bash
for i in "$*"
do
        echo $i
done
for j in "$@"
do
        echo $j
done

[root@localhost test]# bash for2.sh 1 2 3
1 2 3
1
2
3

2.4 while循环

while [ 条件判断式 ] 
  do 
    程序
  done

练习:从1加到100

[root@localhost test]# vim while.sh
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
        s=$[$s+$i]
        i=$[$i+1]
done
echo $s
[root@localhost test]# bash while.sh 
5050

3、Read读取控制台输入

Read(选项)(参数)

选项:

  • -p:指定读取值时的提示符;
  • -t:指定读取值时等待的时间(秒)。

参数

  • 变量:指定读取值的变量名

练习:提示7秒内,读取控制台输入的名称。

[root@localhost test]# vim read.sh
#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds" NAME
echo $NAME
[root@localhost test]# bash read.sh 
Enter your name in 7 seconds yanshuai
yanshuai

 

 posted on 2020-12-26 19:03  嚴∞帅  阅读(45)  评论(0编辑  收藏  举报