Shell基础学习---2、运算符、条件判断、流程控制(第一天学习)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 大数据开发学习Shell基础学习---2、运算符、条件判断、流程控制

1 、运算符

(比较麻烦的写法)

image.png

1、基本语法

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

2、案例实操

image.png

eg.计算(2+3)*4的值

image.png

相加脚本

image.png

image.png

2 、条件判断

1、基本语法

(1)test condition

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

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

echo $?如果正确返回0,如果错误返回1

image.png

注意空格

image.png

image.png


2、常用判断条件

(1)两个整数之间比较

image.png

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

image.png

image.png

image.png

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

image.png

image.png

image.png

image.png

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

image.png

3 、流程控制

注意:

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

(2)if后面要有空格。

3.1 if判断

1、基本语法

(1)单分支

image.png

image.png

image.png

脚本

image.png

image.png

注意:&&可以写成-a || -o

image.png

(2)多分支

image.png

image.png

结果:

image.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

image.png

image.png

3.2 case语句

1、基本语法

注意:

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

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

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

case $变量名 in
"值1")
  如果变量的值等于值1,则执行程序1
;;
"值2")
  如果变量的值等于值2,则执行程序2
;;
  ...省略其他分支...
*)
  如果变量的值都不是以上的值,则执行此程序
;;
esac
#!/bin/bash
case $1 in
1)
        echo "one"
;;
2)
        echo "two"
;;
3)
        echo "three"
;;
*)
        echo "number else"
;;
esac

image.png

image.png

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

image.png

image.png

3、基本语法2

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

代码:for os in linux window macos; do echo $os; done

image.png

代码:for i in {1..100}; do sum=$[$sum+$i]; done; echo $sum

image.png

4、案例实操

(1)打印所有参数

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

image.png

image.png

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

(没有加"")

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

image.png

image.png

(加了"")

image.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

从1加到100

第一种写法:

image.png

第二种写法:

image.png



相关文章
|
2月前
|
Java Shell 网络安全
Shell 流程控制
10月更文挑战第4天
45 2
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
84 12
|
2月前
|
Java Unix Shell
Shell 基本运算符
10月更文挑战第3天
21 0
|
5月前
|
Shell Linux
Shell 脚本编程学习
Shell 脚本编程学习
44 0
|
6月前
|
人工智能 运维 中间件
Linux-shell简单学习
Linux-shell简单学习
37 0
|
6月前
|
Shell
Shell [[]] 命令:条件判断的升级版
`[[ ]]` 是 Bash 中增强型的条件判断命令,提供比 `[ ]` 更多的灵活性,如无需引号包裹变量、直接字符串比较及正则支持。例如: ```markdown - 不加引号比较:`[[ -z $str1 ]]` - 逻辑运算:`[[ -z $str1 ]] || [[ -z $str2 ]]` - 正则匹配:`[[ $phone =~ ^1[0-9]{10}$ ]]` ``` 它不支持 `-a` 和 `-o`,但能用 `&&` 和 `||` 进行逻辑操作。用于复杂字符串验证和文件处理时非常有用。
39 0
|
6月前
|
Shell Windows
Shell test [] 命令:条件判断的艺术
`test` 命令在Shell脚本中用于条件检测,涉及数值、字符串和文件比较。例如,`test $a -eq $b` 检查两个数是否相等;`-e` 检查文件是否存在;`-w` 检查文件是否可写。数值比较不支持 `&gt;=` 和 `&lt;=`,需用 `-ge` 和 `-le`。字符串比较时注意空值,使用双引号。逻辑运算包括 `-a`(与)、`-o`(或)和 `!`(非)。文件类型和权限检测也是`test`的重要用途。
75 0
|
6月前
|
Shell Linux BI
linux shell脚本中 if 条件判断
linux shell脚本中 if 条件判断
44 0
|
7月前
|
机器学习/深度学习 Shell Linux
shell 学习记录
shell 学习记录
40 0
|
7月前
|
Shell Windows Perl
Shell编程中的条件判断与流程控制
Shell编程中的条件判断与流程控制
97 0

热门文章

最新文章