shell - 3 - 运算 + 流程控制

运算符


基本语法

$((运算式)) $[运算式]
expr  + , - , \*,  /,  %    加,减,乘,除,取余

| 注:expr运算符之间要有空格

expr 2 + 3               //简单计算

expr `expr 2 + 3` \* 4   //复合运算

S=$[(2+3)*4]             //$运算方式
echo $S

条件判断


基本语法

1. [ condition ] 
条件非空即为true 如  [ hello ] 返回true [] 返回false
2. 常用判断条件
   1. 两个整数之间比较   
      = 字符串比较      
      -lt 小于(less than) 	  -le 小于等于(less equal)  
      -eq 等于(equal)	 	  -gt 大于(greater than)  
      -ge 大于等于(greater equal)-ne 不等于(Not equal)
   2. 按照文件权限进行判断
      -r 有读的权限(read)	-w 有写的权限(write)  
      -x 有执行的权限(execute)
   3. 按照文件类型进行判断
      -f 文件存在并且是一个常规的文件(file)
      -e 文件存在(existence)		
      -d 文件存在并是一个目录(directory)

实例

 [ 23 -ge 22 ]    //条件
  echo $?         //判断是否执行成功 成功为0 不成功 任意非零数

 [ -w helloworld.sh ]       //判断是否具有写权限
 echo $?                    //判断是否成功

 [ -e /home/cls.txt ]       //判断文件是否成功
 echo $?                    //目录中的文件是否存在


 [ condition ] && echo OK || echo notok  //多条件判断
 [ condition ] && [ ] || echo notok

流程控制


if判断

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

//或者 

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

注意事项:
(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格
(2)if后要有空格

//前面$表示用户权限 不是命令内容 
$ touch if.sh
$ vim if.sh

//vim编写脚本
#!/bin/bash

if [ $1 -eq "1" ]
then
        echo "sucess"
elif [ $1 -eq "2" ]
then
        echo "fales~~"
fi

//调用shell脚本 脚本后加参数
$ bash if.sh 1
$ bash if.sh 2


case

基本语法

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

注意事项:

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

for

基本语法

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

$ touch for1.sh     //创建脚本
$ vim for1.sh       //vim 编辑

//开始编辑
#!/bin/bash

s=0
for((i=0;i<=100;i++))
do
        s=$[$s+$i]
done
echo $s

//执行脚本
$ ./for1.sh 
//结果
“5050”

第二种for循环

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

$  touch for2.sh     //看不懂别学了
$  vim for2.sh

#!/bin/bash
#打印数字

for i in $*
  do
    echo "打印参数 $i "
  done

//执行
$  bash for2.sh str1 str2 str3

  1. $*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数
  2. 当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数

while 循环

基本语法

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

无需实例

posted @ 2021-04-20 16:22  —清风碎心—  阅读(46)  评论(0编辑  收藏  举报