shell 脚本逻辑运算和参数传递及实战|学习笔记

简介: 快速学习 shell 脚本逻辑运算和参数传递及实战

开发者学堂课程【Linux Shell 编程入门与实战shell脚本逻辑运算和参数传递及实战】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/551/detail/7623?


shell 脚本逻辑运算和参数传递及实战


内容介绍:

1、只读和位置变量

2 、退出状态

3 、退出状态码

4 、算术运算

5、 赋值

6、 并且与或者

7 、练习

 

1 、只读和位置变量

◆只读变量:只能声明,但不能修改和删除

➢声明只读变量:

readonly name

declare -r name

➢查看只读变量:

readonly -p

◆位置变量:在脚本代码中调用通过命令行传递给脚本的参数

image.png

shift2默认情况下是只可以移动一次,但也可以一次移俩,一次可以向左移一位,想移两位,shift后面加个数字即可。

图片3.png2.png

All arg is  1 2 3 4 5 6

The arge  number is 7

Shift 1

1 st arg is 2

2 st arg is 3

3 st arg is 4

All arg is  1 2 3 4 5 6

The arge  number is 6

Shift 2

1 st arg is 4

2 st arg is 5

3 st arg is 6

$1, $2, ... :对应第1、第2等参数, shift [n]换位置

$0:命令本身

$*:传递给脚本的所有参数,全部参数合为一个字符串

$@:传递给脚本的所有参数,每个参数为独立字符串

$#:传递给脚本的参数的个数

$@ $*只在被双弓|号包起来的时候才会有差异

set --清空所有位置变量


2 、退出状态

进程使用退出状态来报告成功或失败

●0代表成功,1-255代表失败

●$?变量保存最近的命令退出状态

例如:

ping -c1 -W1 hostdown &> /dev/nullecho $?

创建一个用户是否成功,只要看$?结果是否为0就可以,

$?对于脚本来讲,在执行完毕后,也可以判断是否成功失败。

图片3.png11.png

root@centos7 bin #f1.sh

/root/bin/f1.sh: line 12: hostnam:command not founnd

root@centos7 bin # echo $?

root@centos7 bin #0

脚本返回的结果是否为0,是由最后一条命令决定的


3、 退出状态码

◆bash自定义退出状态码

exit [n] :自定义退出状态码

注意:脚本中一旦遇到exit命令 ,脚本会立即终止;终止退出状态取决于exit命令后面的数字

注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码


4 、算术运算

◆bash中的算术运算:help let

+, -,*,/,%取模(取余),**(乘方)

实现算术运算:

(1) tet var=算术表达式

(2) var= $[算术表达式]

(3) var= $((算术表达式))

(4) var= $(expr arg1 arg2 arg3 ..)

注意:expr 是个命令 本身就可以做运算。

#expr 1 + 2

1 + 2   中间有空格是不对的

#expr 3 \* 2

乘号是不可以直接*的

(5) declare-ivar =数值

(6) echo '算术表达式’| bc

◆乘法符号有些场景中需要转义,如*

◆bash 有内建的随机数生成器: $RANDOM ( 0-32767 )

echo $[$RANDOM%50] : 0-49之间随机数


5 、赋值

◆增强型赋值:

+=,-=,*=, /=, %=

◆let varOPERvalue

例如:let count+ =3

自加3后自赋值

◆自增,自减:

let var+= 1

let var++

let var-=1

let var--


6、并且与或者

&并且 and

或者 or

0&0=0

0&1=0

1&0=0

1&1=1

0|0=0

0|1=0

1|0=1

1|1=1

短路与&&

短路或||

0&&0=0

0&&1=0

1&&0=0

1&&1=1

Cmd1&&cmd2

如果cmd1为假,cmd2不需要执行,反之cmd1为真,需要cmd2执行

Cmd1||cmd2

如果cmd1为真,cmd2不需要执行,反之cmd1为假,需要cmd2执行

121.png


7、 练习

1、编写脚本/root/bin/sumid.sh,计算/etc/ passwd文件中的第10个用户和第20用户的ID之和,

图片3.png33.png

注意:写脚本尽可能要简洁,不要重复的写,能充分利用的代码,尽可能用一个来代替,不要重复出现。

2、编写脚本/root/bin/sumspace.sh ,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和。

3、编写脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

相关文章
|
6天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
30 1
|
26天前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
52 12
|
21天前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
24 2
|
29天前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
15天前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
12 0
|
1月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
87 2
|
1月前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
52 17
|
1月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
40 12
|
1月前
|
网络协议 关系型数据库 MySQL
Shell 脚本案例
Shell 脚本案例
41 8