Shell基础学习---2、运算符、条件判断、流程控制

简介: Shell基础学习---2、运算符、条件判断、流程控制

1 、运算符

1、基本语法

((运算式))”或‘“[运算式]”

2、案例实操

0c0497cafe6f49fa82fda8ba79c8ca0c.png

2 、条件判断

1、基本语法

(1)test condition

(2)[ condition ] (注意condition前后要有空格)

注意:条件非空即为true,[zhm]返回true,[ ]返回false

2、常用判断条件

(1)两个整数之间比较

符号 含义
-eq 等于(equal)
-ne 不等于(not equal)
-lt 小于(less than)
-le 小于等于(less equal)
-gt 大于(greater than)
-ge 大于等于(greater equal)

说明:如果是字符串之间的比较,用等号“=”判断相等;用“!=”判断不等。

(2)按照文件权限进行判断

符号 含义
-r 有读的权限(read)
-w 有写的权限(write)
-x 有执行的权限(execute)

(3)

符号 权限
-e 文件存在(existence)
-f 文件存在并且时一个常规文件(file)
-d 文件存在并且是一个目录(directory)

3、案例实操

(1)100是否大于99

f156f36c11d344d5a240770f40ad61df.png

(2)helloworld.sh是否有执行权限

6e6e31828fac4c15a2bb8537b722828f.png

(3)/root/scripts/a/a.txt 目录中的文件是否存在

4bc950b332f74c49ae1c65e2c0ef93bb.png

(4)多条件判断(&&表示前一条命令执行成功时,才执行后一条命令,||表示上一条命令执行失败2后,才执行下一条命令)

d94d4e40f1f8467ab1c256c1bc1c5766.png

3 、流程控制

3.1 if判断

1、基本语法

(1)单分支

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

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

(2)多分支

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

注意:

(1)[ 条件判断式 ],中括号和条件判断式之间必须要有空格。

(2)if后面要有空格。

2、案例实操

输入一个年龄数字参数,判断这个年龄属于哪种人。

f482321480b646bda4aefca7bb814674.png

#!/bin/bash
if [ $# -ne 1 ]
then
        echo '请输入一个数字参数'
        exit
fi
if [ $1 -lt 18 ]
then
        echo '未成年'
elif [ $1 -lt 40 ]
then
        echo '青年人'
elif [ $1 -lt 60 ]
then
        echo '中年人'
else
        echo '老年人'
fi

3.2 case语句

1、基本语法

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

注意:

(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

(2)双分号“;;”表示命令序列结束,相当于java中的break。

(3)最后的“)”表示默认模式,相当于java中的default。

2、案例实操

输入一个数字(1-3),输出对应的英文

4f5b85e5e33242e794f78b89325b82da.png

#!/bin/bash
case $1 in
1)
        echo "one"
;;
2)
        echo "two"
;;
3)
        echo "three"
;;
*)
        echo "number else"
;;
esac

3.3 for循环

1、基本语法

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

2、案例实操

#!/bin/bash
sum=0
for ((i=0;i<=100;i++))
do
        sum=$[$sum+$i]
done
echo $sum

f0d2aa9dec0f4a6a8cac45fabd5bf4cf.png

3、基本语法2

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

4、案例实操

(1)打印所有参数

84ae893ebe414632920d882c94edfee0.png

#!/bin/bash
for i in monther father you
do
        echo "$i都是家人"
done

(2)比较$*和$@的区别

(没有加"")

ecdaf629f31f4041b951df97c0f1365b.png

#!/bin/bash
echo '==========$*=========='
for i in $*
do
echo $i
done
echo '==========$@=========='
for i in $@
do
echo $i
done

(加了"")

b3d40d45dd5d485894db70ddf0cb4ce8.png

#!/bin/bash
echo '==========$*=========='
for i in "$*"
do
echo $i
done
echo '==========$@=========='
for i in "$@"
do
echo $i
done

注意:

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

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

3.4 while循环

1、基本语法

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

2、案例实操

从1加到100

1c878bc6f29244de91918805de06fc5a.png

#!bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
        sum=$[$sum+$i]
        i=$[$i+1]
done
echo $sum
相关文章
|
1天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
13天前
|
运维 Shell Python
Shell和Python学习教程总结
Shell和Python学习教程总结
|
13天前
|
运维 Shell Linux
第四章 Shell流程控制
第四章 Shell流程控制
|
13天前
|
运维 Shell C语言
第三章 Shell表达式与运算符
第三章 Shell表达式与运算符
|
27天前
|
监控 Shell 持续交付
通过Shell脚本实现局域网管理软件的自动化部署流程
本文介绍了如何使用Shell脚本自动化局域网软件部署流程,以简化管理和提高效率。脚本包括定义安装目录、服务器列表和软件包,然后遍历服务器进行传输和解压。此外,还展示了通过Shell脚本监控网络设备和软件状态,并自动将监控数据提交到网站的功能,有助于及时发现和解决问题,提升系统稳定性。通过这种方式,可有效减轻管理员的工作负担,降低成本。
73 0
|
28天前
|
Shell
shell学习(六) 【case多条件分支语句】
shell学习(六) 【case多条件分支语句】
14 1
|
28天前
|
Shell 应用服务中间件 nginx
shell学习(七) 【shell 函数】
shell学习(七) 【shell 函数】
10 1
|
28天前
|
Shell Perl
shell学习(九) 【shell sed用法】
shell学习(九) 【shell sed用法】
9 0
|
28天前
|
机器学习/深度学习 Shell Windows
shell学习(八) 【shell 正则 匹配符和限定符】
shell学习(八) 【shell 正则 匹配符和限定符】
9 1
|
Shell 开发工具
shell编程之流程控制判断
一、shell判断-if 1.if判断基本概述 1.什么是if? If就是模仿人类的判断来进行的,但他没有人类那么有情感,只有True和false这两种结果。 2.为什么要使用if 当我们在写程序的时候,是否经常需要对上一步执行结果进行判断。那么判断就需要用if语句来实现。 3.if的基础语法 1.单分支语法 if [ $1 -eq $2];then echo “ok” fi 2.双分支结构 if [ $1 -eq $2 ];then echo “ok” else echo “error” fi 3.多分支结构###如果上面的匹配成功就不会继续向下匹配 if [ 如果你有房 ];then
143 0