shell 编程(二)

1.set命令和脚本安全

set命令可以用来定制shell 环境 type set 显示set 变量的类型

$- 变量

$- 是一个特殊的变量 表示当前shell 的选项状态

使用echo $- 返回一个包含当前shell 设置的选项的字符串,这些选项控制shell 的行为

在终端执行 echo $- 并看到输出 himBHs 时,意思是当前 shell 的选项状态是 himBHs。可以拆解这些字符来理解它们的含义:

  • h :表示启用"hashing"。在这种模式下,shell 会缓存最近使用的命令的路径,优化命令查找速度。 set +h 禁用缓存 set -h 开启
  • i :表示交互式模式。这意味着当前 shell 是一个交互式的 shell(例如,你在终端中直接输入命令时,shell 就是交互式的)。
  • m :表示监控模式(monitoring)。这通常用于进程管理,它允许 shell 在后台监视作业状态。
  • B:braceexpand 表示大括号扩展
  • H :表示启用历史命令的功能。这意味着 shell 会记录并允许访问历史命令。!!返回最近的一个历史命令 !n 返回第n个命令
  • s :表示启用启动脚本的功能。这通常用于启动时脚本的处理。

以上的任意的选项都可以通过 set + 来关闭 使用set - 开启

2.set 命令实现脚本安全

-u 在扩展一个没有设置的变量时,显示错误信息,等同set -o nounset

-e 如果一个命令返回一个非0退出状态值(失败) 就退出,等同set -o errexit

-o option 显示,打开或者关闭选项

显示选项: set -o

打开选项: set -o 选项

关闭选项: set +o 选项

-x 当执行命令时,打印命令参数 等价bash -x *.sh

help set 查看set 详细用法

3.算术运算

bash 中的算术运算

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

乘法符号有些场景中需要转义

实现算术运算

(1) let var=算术表达式

(2) var =$[算术运算]

(3) var =$((算术运算))

(4) var =(expr arg1 arg2 arg3 ...) expr 是命令 i =10 j = 20 expr i + $j 使用* 需用\ 转义

(5) declare -i var = 数值 declare -i var 将变量声明为一个数字变量

(6) echo '算数表达式' | bc bc(Basic Calculator)是一个用于进行数学计算的命令行工具。它支持浮点运算、基本的算术运算、变量、函数以及条件语句等。
内建的随机数生成器变量 man bash /random 查看说明

$RANDOM 取值范围: 0-32767
范例:

生成 0 - 49 之间的随机数

echo \[RANDOM%50]
增强型的赋值: 需要使用 let ; let i+=100

+=

-=

*=

/=

%=

++

--
逻辑运算

true , false // 均为shell 命令 help true 查看

与: &

1 & 1 1

1 & 0 0

0 & 0 0

0 & 1 0

或: |

1 | 1 1

1 | 0 1

0 | 1 1

0 | 0 0

非: !

!1 = 0 !true

!0 = 1 !false

异或: ^

异或的两个值,相同为假,不同为真

短路运算

cmd1 cmd2

•短路与

第一个为0 那么为0

第一个为1 那么第二个需要参与运算

•短路或

第一个为1 那么为1

第一个为0 那么第二个需要参与运算

bash 打开一个子shell

exit 退出当前shell

相关推荐
Elias不吃糖7 小时前
Java Lambda 表达式
java·开发语言·学习
guygg887 小时前
一级倒立摆MATLAB仿真程序
开发语言·matlab
情缘晓梦.8 小时前
C语言指针进阶
java·开发语言·算法
世转神风-8 小时前
qt-字符串版本与数值版本互转
开发语言·qt
极客代码8 小时前
深入解析C语言中的函数指针:原理、规则与实践
c语言·开发语言·指针·状态机·函数·函数指针
w-w0w-w9 小时前
C++模板参数与特化全解析
开发语言·c++
不绝1919 小时前
C#核心:继承
开发语言·c#
AI即插即用10 小时前
即插即用系列(代码实践)专栏介绍
开发语言·人工智能·深度学习·计算机视觉
码农水水10 小时前
蚂蚁Java面试被问:混沌工程在分布式系统中的应用
java·linux·开发语言·面试·职场和发展·php