ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Shell 运算符/条件判断/流程控制

2021-07-06 22:02:25  阅读:213  来源: 互联网

标签:Shell love zhang 流程 echo 运算符 shell ban root


一、运算符

1、基本语法

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

注意:expr 运算符间要有空格

2、案例实操

(1)计算3+2的值

[root@centos7 shell_test]# expr 2 + 3
5

(2)计算3-2的值

[root@centos7 shell_test]# expr 3 - 2
1

(3)计算(2+3)X4的值

  • expr一步完成计算
[root@centos7 shell_test]# expr `expr 2 + 3` \* 4
20
  • 采用$[运算式]方式
[root@centos7 shell_test]#  S=$[(2+3)*4]
[root@centos7 shell_test]#  echo $S

二、if 判断

1、基本语法

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

或者

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

注意事项:

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

2、案例实操

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

[root@centos7 shell_test]#  touch if.sh
[root@centos7 shell_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

三、case 语句

1、基本语法

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

注意事项:

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

2、案例实操

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

[root@centos7 shell_test]#  touch case.sh
[root@centos7 shell_test]#  vim case.sh

#!/bin/bash

case $1 in
"1")
    echo "banzhang"
;;
"2")
    echo "cls"
;;
*)
    echo "renyao"
;;
esac

四、for 循环

1、基本语法1

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

2、案例实操

从1加到100

[root@centos7 shell_test]#  touch for1.sh
[root@centos7 shell_test]#  vim for1.sh

#!/bin/bash

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

3、基本语法2

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

4、案例实操

打印所有输入参数

#!/bin/bash
#打印数字

for i in $*
do
        echo "ban zhang love $i "
done

echo "================================"

for i in $@
do
        echo "ban zhang love $i "
done

echo "================================"

for i in "$*"
do
        echo "ban zhang love $i "
done

echo "================================"

for i in "$@"
do
        echo "ban zhang love $i "
done

测试

[root@centos7 shell_test]# sh for2.sh 11 22 33 44
ban zhang love 11 
ban zhang love 22 
ban zhang love 33 
ban zhang love 44 
================================
ban zhang love 11 
ban zhang love 22 
ban zhang love 33 
ban zhang love 44 
================================
ban zhang love 11 22 33 44 
================================
ban zhang love 11 
ban zhang love 22 
ban zhang love 33 
ban zhang love 44 

5、比较$*和$@区别

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

五、while 循环

1、基本语法

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

2、案例实操

从1加到100

[root@centos7 shell_test]#  touch while.sh
[root@centos7 shell_test]#  vim while.sh

#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
        s=$[$s+$i]
        i=$[$i+1]
done

echo $s

 

标签:Shell,love,zhang,流程,echo,运算符,shell,ban,root
来源: https://www.cnblogs.com/jwen1994/p/14913934.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有