在Shell脚本中声明和使用布尔变量示例

Shell中特殊参数变量和特殊状态变量汇总 特殊参数变量: $#:传给Shell脚本的参数个数 $0:当前Shell脚本名 $1:传递给Shell脚本的第1个参数,若没有则为空 $2:传递给Shell脚本的第2个参数,若没有则为空 $3:传递给Shell脚本的第3个参数,后续以此类推 ${10}:传递给Shell脚本的第10个参数,读取的参数位置大于等于10之后需要使用花括号 $@:传递给Shell脚本的所有参数组成的列表,即参数列表 $*:传递给Shell脚本的的所有参数组成的单个字符串,不同参数之间空格依旧存在 特殊状态变量: $?:上一指令的退出码(既可以是执行脚本程序指令也可以是普通命令),0表示正常退出,其余表示异常 $$: 立即下载

需要定义一个名为failed的bash变量,并将值设置为False。当从cron作业调用我们的脚本时,特定的任务可能会失败,然后我需要将failed转换为True。基于$failed,我需要发送一封电子邮件警告我的cron作业失败了。那么,如何在Linux服务器上运行的shell脚本中声明和使用布尔变量呢? Linux教程 Bash中没有布尔值。但是,我们可以根据需要将shell变量的值定义为0(“False”)或1(“True”)。不过,Bash也支持布尔表达式条件。让我们看看如何在Bash中组合这两个概念来声明布尔变量,并在运行在Linux、macOS、FreeBSD或类unix系统上的shell脚本中使用它们。

在bash中声明布尔变量

语法如下,定义如下内容

failed=0 # False jobdone=1 # True ## 更具可读性的语法 ## failed=false jobdone=true

现在,当$failed是数字(例如0或1)时,我们可以按以下方式检查它:

if [ $failed -eq 1 ]then    echo "Job failed"else    echo "Job done"fi

就这样。

如何在Shell脚本中声明和使用布尔变量(例如“ true”和“ false”)

当然,我们可以将它们定义为字符串,并使我们的代码更具可读性:

#!/bin/bash# Declare it as string failed="false" if [ "$failed" == "true" ]then    echo "Job failed"else    echo "Job done"fi

或者

# set it to trueemail_sent=true# ...do your stuff and flip email_sent to 'false' if needed ...if [ "$email_sent" = true ] then    echo 'Data logged and email sent too.'else    echo 'ALERT: Operation failed.'    logger 'ALERT: Operation failed.'fi

在bash下定义布尔变量的替代语法如下:

# Let us Declare Two Boolean Variables# Set this one to truejobstatus=true# Check it if [ "$jobstatus" = true ] ; thenecho 'Okay :)'elseecho 'Noop :('fi# Double bracket format syntax to test Boolean variables in bashbool=falseif [[ "$bool" = true ]] ; thenecho 'Done.'elseecho 'Failed.'fi

让我们对其进行测试:

Linux教程

shell脚本示例中的Bash布尔变量

下面是一个示例脚本:

#!/bin/bash# Purpose: Backup stuff from /data/apps# Tested on : AWS EC2 with EFS and Ubuntu 20.04 Pro servers# ---------------------------------------------------------source "/apps/.keychain/$HOSTNAME-sh"source "/apps/scripts/cli_app.sh"# Set failed to 'False' failed=0 D="/nfsefs/ec2mum/prodwwwroot"log="/tmp/server.log.$$.txt"# Log everything to our fileexec 3>&1 4>&2trap 'exec 2>&4 1>&3' 0 1 2 3exec 1>"${log}" 2>&1# Backup all web serversfor s in www-0{1..8}do        /usr/bin/rsync -az --delete backupt@${s}:/data/apps/ ${D}/${s}/        # set to 'true' when rsync failed and continue loop          [ $? -ne 0 ] && failed=1done# See if rsync failed in loop if [ $failed -eq 1 ]then        echo "$0 script error: rsync backup failed. See attached log file." | mail -A ${log} -s "$HOSTNAME - LXD backup failed" -r sysuser@my-corp-tld alert@somewhere-tld        push_to_mobile "$0" "Dear sysadmin,        Backup failed at $HOSTNAME at $(date).         ---- log:start ---        $(<${log})        --- log:end --        --         Yours faithfully,        $0"fi[ -f "${log}" ] && rm -f "${log}"

Bash布尔测试

首先,定义一个日志文件:

log="/tmp/rsnapshot.$$.txt"

让我们运行rsnapshot命令:

/usr/bin/rsnapshot "$1" 2>&1 | $HOME/bin/error-scanner.pl > "${log}"

在$status中获取bash命令的退出状态,如下所示:

status=$?

接下来在我们的$log文件中搜索ERROR:

alogs="$(egrep -w '^ERROR:|ERROR' $log)"

如果$status不为零(命令失败)或$alogs不为空(由$HOME/bin/error-scanner.pl报告错误),那么通过电子邮件/文本消息通知系统管理员或开发人员:

if [ $status -ne 0 ] ||  [ "$alogs" != "" ]; then        sub="Backup job failed at $HOSTNAME"        mail -A "$log" -s "$sub" -r sys@somewhere-tld sysadmin@gmail-tld <<< "$0 script ended with errors when we ran /usr/bin/rsnapshot \"$1\" $alogs"        push_to_mobile "$0" "$sub        $0 script ended with errors when we ran /usr/bin/rsnapshot \"$1\"        $alogs        See email for detailed log."else        sub="Backup successful at $HOSTNAME"        #push_to_mobile "$0" "$sub. See email for detailed backup log." >/dev/null        #mail -A "$log" -s "$sub" -r sys@somewhere-tld sysadmin@gmail-tld <<< "$0 /usr/bin/rsnapshot ran successfully\"$1\" $alogs"fi

最后,删除$log文件:

[ -f "$log" ] && rm -f "$log"

总结

本文我们讲解了如何在Linux或类Unix系统的shell脚本/bash中声明和使用布尔变量。使用man命令查看以下手册页:

$ man bash $ help test $ help if

以上就是良许教程网为各位朋友分享的在Shell脚本中声明和使用布尔变量示例。 以上就是良许教程网为各位朋友分享的Linux相关知识。

DDR内存设计必看:DFI接口协议详解与实战避坑指南(附时序图解析) 本文深入解析了DDR内存设计中连接内存控制器与物理层的DFI接口协议,聚焦于DDR4/DDR5设计的实际痛点。文章详细阐述了协议版本兼容性、时钟架构(匹配频率与频率比系统)、PCB信号完整性设计以及上电初始化与调试等关键环节,为硬件工程师提供了一套从理论到实战的完整避坑指南,并附有时序图解析以助理解。 阅读详情

相关推荐

tmux + Claude Code 远程开发指南:从 WSL 配置到断线无忧

远程开发中,SSH 连接中断常导致后台任务丢失,这是困扰开发者的经典难题。tmux 作为终端复用器,通过将进程挂在常驻会话中,使其脱离 SSH 连接独立运行,从根本上解决了断线导致的任务终止问题。Claude Code 等 AI 编程代理需要长时间运行并保持交互上下文,恰好依赖这种会话持久化能力。结合 Windows Subsystem for Linux 提供类 Unix 环境,开发者可在 Windows 上实现稳定的远程开发工作流。本文将完整介绍从 WSL 环境配置、tmux 会话管理,到与 Claud

weixin_30423065的博客 348

Linux教程 - 在Shell脚本中声明和使用布尔变量示例

需要定义一个名为failed的bash变量,并将值设置为False。当从cron作业调用我们的脚本时,特定的任务可能会失败,然后我需要将failed转换为True。基于$failed,我需要发送一封电子邮件警告我的cron作业失败了。那么,如何在Linux服务器上运行的shell脚本中声明和使用布尔变量呢? Bash中没有布尔值。但是,我们可以根据需要将shell变量的值定义为0(“False”)或1(“True”)。不过,Bash也支持布尔表达式条件。让我们看看如何在Bash中组合这两个概念来声明布尔变

boazheng的博客 5127

机器视觉:9点标定的原理与实现

标定就是将机器视觉处理得到的像素坐标转换成实际项目中使用到的毫米坐标。简单说即使看看实际单位距离内有几个像素,如下图所示,10mm的距离内有222个像素,那像素坐标和实际的毫米坐标就有个比例关系了。

m0_49968063的博客 1万+

bash的基础特性(3)

目录 提供了编程环境 1.程序:指令+数据 2.shell编程:过程式、解释执行 练习 参考资料 提供了编程环境 1.程序:指令+数据             (算法+数据结构)             程序编程风格:                   过程式:以指令为中心,数据服务于指令                   对象式:以数据为中心,指令服务于数据     ...

Linux_Web 461

交换机基本介绍(分类、性能指标、硬件构成及工作方式)

一、交换机的分类与性能指标 1.1交换机的分类 按照网络构成方式来分的话,交换机分为三类:接入层交换机、汇聚层交换机和核心层交换机。 按照OSI模型来划分的话,分为:二层交换机、三层交换机和四层交换机 还有一种按照硬件形态来划分,可以分成两类:盒式交换机和机框式交换机。 盒式交换机是一种有固定端口数,有时也会带有少量扩展槽的交换机。机架式交换机是一种插槽式的交换机,这种交换机扩展性较好,可支持不同的网络类型,可支持更大端口密度的网络。一般在数据中心的接入层都会采用盒式交换机,盒式...

monologuezjp的博客 4万+

Docker Desktop 在 Windows 上的安装和使用

WSL 指 “”,这是一个在 Windows 10\11 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发的,旨在使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。这极大地拓展了Windows系统的功能,使用户能够在Windows环境中享受到Linux的强大功能。//Linux容器。

swadian2008的博客 6万+

shell有bool运算么_如何在Shell脚本中声明和使用布尔变量?

达令说bool=trueif [ "$bool" = true ]有三苦的(问题原)答案我不推荐接受的答案1。它的语法很漂亮,但是有一些缺陷。说我们有以下情况。if $var; then echo 'Muahahaha!'fi在以下情况2中,此条件将评估为true并执行嵌套命令。# Variable var not defined beforehand. Case 1var='' # Equi...

weixin_35437233的博客 2046

MIT6.824-lab2D-2022(日志压缩详细讲解)

从paper中去讲解,并实现关于lab2D的代码。

幸平的博客 6034

shell有bool运算么_shell编程-bash shell的布尔运算

在 Bash 里有这样的常量(实际上是两个内置命令,在这里我们姑且这么认为,后面将介绍),即 true 和 false,一个表示真,一个表示假。对它们可以进行与、或、非运算等常规的逻辑运算。1. 与或非运算$ if true;then echo "YES"; else echo "NO"; fiYES$ if false;then echo "YES"; else echo "NO"; fiNO与...

weixin_39960700的博客 489

DFT实战:如何用Synopsys工具搞定多时钟域Scan Chain设计(附避坑指南)

本文详细解析了使用Synopsys DFT Compiler工具链实现多时钟域Scan Chain设计的全流程,包括时钟混合策略、跨时钟域平衡技巧和实战脚本剖析。通过量产验证的工程实践方案,帮助DFT工程师有效解决复杂SoC设计中的Scan Chain挑战,提升测试效率和质量。

mm9012的博客 1031

基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端

【代码】基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端。

weixin_42300449的博客 165

shell有bool运算么_如何在shell脚本中声明和使用布尔变量?

我尝试使用以下语法在shell脚本中声明一个布尔变量:variable=$falsevariable=$true它是否正确? 另外,如果我想更新该变量,我会使用相同的语法? 最后,使用布尔变量作为正确表达式的语法如下:if [ $variable ]if [ !$variable ]修订答案(2014年2月12日)the_world_is_flat=true# ...do something ...

weixin_42164931的博客 2531

基于simulink的多能源系统协同控制的复杂场景实例:氢燃料电池+锂电池混合动力电动汽车能量管理仿真

本文介绍了基于Simulink的氢燃料电池与锂电池混合动力电动汽车能量管理系统的建模与仿真方法。系统包含驾驶循环输入、氢燃料电池、锂电池、能量管理和电机驱动等模块,通过Simulink实现各模块的协同控制。文章详细说明了从模型创建到性能评估的完整流程,包括驾驶循环输入设置、燃料电池和锂电池子系统建模、能量管理策略设计等关键步骤。该仿真模型可验证不同工况下的系统响应和能量利用效率,为优化混合动力汽车的能量管理策略提供有效工具。通过引入更复杂的物理细节和环境因素,可进一步提升模型的实用性和准确性。

xiaoheshang_123的博客 368

boolean linux shell_在Shell脚本中声明和使用布尔变量示例

需要定义一个名为failed的bash变量,并将值设置为False。当从cron作业调用我们的脚本时,特定的任务可能会失败,然后我需要将failed转换为True。基于$failed,我需要发送一封电子邮件警告我的cron作业失败了。那么,如何在Linux服务器上运行的shell脚本中声明和使用布尔变量呢? Bash中没有布尔值。但是,我们可以根据需要将shell变量的值定义为0(“False”)...

weixin_34413326的博客 1484

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

boolean linux shell,如何声明和在shell脚本中使用布尔变量?

I tried to declare a boolean variable in a shell script using the following syntax:variable=$falsevariable=$trueIs this correct? Also, if I wanted to update that variable would I use the same syntax? ...

weixin_33203970的博客 266

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

玩转shell-各种变量类型的运算和使用总结

文章目录字符串类型字符串声明字符串拼接字符串长度字符串比较字符串判空数字整型数字整型声明数字整型改变数字整型运算数字整型比较数字浮点型数字浮点型声明数字浮点转整型数字浮点型运算数字浮点型比较数组类型数组声明数组输出数组删除布尔值字符串比较的布尔值数字比较的布尔值其他操作变量作用域变量删除 字符串类型 支持的运算符只有==,!= 字符串声明 shell 中变量默认就是字符串,没有声明就是空值 # 方式一:双引号最常规声明 str="hello world!"; # 方式二:字符串有空格就必须要加双引号了,否

abcnull 的博客 2558

shell脚本语法

系统变量是操作系统用来存储配置信息的变量,它们可以控制操作系统的行为和程序的运行环境。系统变量的种类和内容取决于操作系统的类型和版本。:这些变量为程序提供运行时所需的信息,如文件路径、系统配置、用户偏好等。PATHHOMETEMPTMPDIR:这些变量定义了系统的基本配置,如系统启动参数、硬件配置、网络设置等。HOSTNAMESHELLHISTSIZE:这些变量存储了用户的个人设置,如桌面环境、主题、语言偏好等。:这些变量与系统的安全设置和用户权限有关。UIDEUID。

qq_62893047的博客 2311

shell脚本编程 变量补充 if条件判断

shell脚本编程 变量补充 if条件判断 变量的类型:字符串 数值 布尔类型:true false null shell中指定变量的类型 :declare declesar:内置命令 用来声明和修改变量的属性(只读–readonly—r) 设置为只读变量:#declare -r a=10 r //不能修改,包括不能删除 设置为数值变量:#declare -...

weixin_44799698的博客 596

shell脚本编程 变量补充 if条件判断

变量的类型: 字符串 数值 布尔类型 :ture false null shell中指定变量的类型:declare decleare: 内置命令 用来声明和修改变量的属性(只读-- readonly --r) 设置为只读变量 # declare -r a=10 //不能修改包括不能删除 设置为数值变量: # declare -i 变量名 // 只能存储数值 // 不能为...

wangboyujiayou的博客 272

shell脚本编程 变量补充 if条件判断

shell脚本编程 变量补充 if条件判断 变量的类型: 字符串 数值 布尔类型 null shell中指定变量的类型:declare declare : 内置命令 用来声明和修改变量的属性(只读–readonly) 设置为只读变量: #declare -r a=10 //不能修改包括不能删除 设置为数值变...

weixin_46575696的博客 322

Shell编程基础 – 变量(Variables)

Bash变量作为shell脚本的重要组成部分,提供了在Unix/Linux命令行界面操作和保存数据的方法。 本文简要介绍Bash Shell脚本变量的基础知识以及应用,包括变量类型、声明方法、初始化及相关用法,希望对您学习shell编程有所帮助。

jackson_lingua的博客 571

shell脚本编程 变量填充 if条件判断

变量的类型: 字符串 数值 布尔类型: true false null shell中指定变量的类型: declare declare: 内置命令 用来声明和修改变量的属性(只读-- readonly-- r) 设置为只读变量: # declare -r a=10 //不能修改包括不能删除 设置为数值变量: # declar...

zhangchunqi的博客 372

Linux Shell基本命令

在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 ... 值n)例如:或者value0value1value2value3还可以单独定义数组的各个分量:可以不使用连续的下标,而且下标的范围没有限制。

顺其自然~专栏 370

shell基础编程(一)

引言:之前的初识shell的内容简单的介绍了一下shell,帮助大家认识了一下shell 的组成,这篇文章就具体的讲解shell有关的知识。答:其实意思是一样的,但-a和&&区别是-a两边都执行,然后判断。(一)下表列出了常用的算术运算符,具体的应用在举例列举出来,假设x和y都为1,(())只支持整数。一句话总结,单引号内容为纯字符串,双引号里面可以取变量的值,举个例子。上面的文件里面的echo是用于输出的,变量本身的值需要用到$答:不是的,这只是整数运算的一种,还可以用其他的比如let。

weixin_42394409的博客 706

Shell笔记第二节

我们在一些项目中需要向脚本输入一些参数,脚本内获取参数的格式为:$n。n代表一个数字,1为执行脚本的第一个参数,2为执行脚本的第二个参数,以此类推。再此进行一个初略的估计:应该是将输入都放在一个数组或者字符串中,再有脚本去读入,这样./shell1.sh才是第0个元素。如“$@”用["]括起来的情况,以"$1" "$2" ... "$n"的形式输出所有参数。如“$*”用["]括起来的情况,以“$1 $2 ... $n”的形式输出所有参数。与$*相同,但是使用时加引号,并在引号中返回每个参数。

weixin_44331218的博客 135

[Shell] Shell 中的算术

  Shell 脚本变量默认是作为字符串处理,而不是数字,这使得在 Shell 脚本做数学运算显得较为复杂。在保持脚本编程规范和更好的算术支持方便,Perl 和 Python 会是更好的选择。但是你仍然可以选择在 Shell 中进行算术。事实上,过去许多年来,Unix 已经增加多种特性来支持数字处理。 备注:正如下文所示,一些帮助处理数字的命令在某些方便表现仍不够完善,例如运算符周围的空格。...

weixin_33881041的博客 98
上一篇: 常用的Git命令清单
下一篇: Nginx性能调优
码农在线QY
博客等级 码龄6年 11粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值