你能写出几种 Shell 逻辑与算术?我这里有13种!

了解Linux中的shell脚本 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。shell就是用户与linux交换的一款语言。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。 阅读详情

相较于最初的 Bourne shell,现代 bash 版本的最大改进之一体现在算术方面。早期的 shell 版本没有内建的算术功能,哪怕是给变量加1,也得调用单独的程序来完成。

1、算术方法一: $(( ))

只要都是整数运算,就可以在 $(( )) 的算术表达式内使用所有的标准运算符。还有一个额外的运算符:可以用** 进行幂运算,如下:

COUNT=$((COUNT + 5 + MAX * 2))
复制代码

或者:

MAX=$((2**8))
复制代码

$(( )) 表达式内不需要使用空格,不过在运算符和操作数两边加上空格也无妨(但 ** 必须写在一起)。但是 = 两边绝不能出现空格,这和 bash 变量赋值的规则一样。如果你按以下方式写:

COUNT = $((COUNT+5))   # 注意 = 号两边多了空格,可不像你想的那样!
复制代码

那么,bash 会尝试运行一个名为 COUNT 的程序,其第一个参数为 =,第二个参数为 $COUNT 与 5 之和。记住,别在赋值号两边加空格!

另一个怪异之处是,通常出现在 shell 变量前表示取值的 符号(如符号(如符号(如COUNT 或 $MAX)在双括号内部是不需要的。例如,我们可以写:

$((COUNT + 5 + MAX * 2))
复制代码

shell 变量前并没有 符号,实际上,外部的符号,实际上,外部的符号,实际上,外部的 应用于整个表达式。但如果用到了位置参数(如 2),那么2),那么 2),那么 还是少不了的,因为只有这样才能区分位置参数与数字常量(如 2)。以下是一个示例。

COUNT=$((COUNT + $2 + OFFSET))
复制代码

也可以用逗号运算符形成级联赋值,如下图:

echo $(( X+=5 , Y*=3 ))
复制代码

该表达式执行两次赋值操作,然后由 echo 显示出第二个子表达式的结果(因为逗号运算符返回其第二个操作数的值)。

2、算术方法二:let

除去使用$(())可进行算术运算外,还可以使用let语句,如下:

let COUNT=COUNT+5
复制代码

同(())一样,在使用变量时不需要使用(())一样,在使用变量时不需要使用(())一样,在使用变量时不需要使用符号。但是,当我们需要使用let进行COUNT=$((COUNT + 5 + MAX * 2))格式的运算时,需要使用到引号‘’,如下:

let COUNT+='5+MAX*2'
复制代码

let 语句和 $(( )) 语法的另一处重要区别在于两者处理空白字符(空格字符)的方式不同。对 let 语句来说,要么添加引号,要么赋值运算符(=)和其他运算符两边不能出现空格。必须将运算符和操作数放在一起形成一个单词。以下两种写法都没问题。

let i=2+2
let "i = 2 + 2"
复制代码

$(( )) 语法就宽松多了,它允许各种空白字符出现在双括号内。这种写法不易出错,代码的可读性也要好得多,是我们执行 bash 整数运算时的首选方式。

3、bash中的赋值运算符

4、条件分支if

条件判断,逻辑分支是任何一个语言都会遇到的问题,bash中同其他语言类似,都是使用if进行条件判断,如下:

if [ $# -lt 3 ]
then
 printf "%b" "Error. Not enough arguments.\n"
 printf "%b" "usage: myscript file1 op file2\n"
 exit 1
fi
复制代码

或者:

if (( $# < 3 ))
then
 printf "%b" "Error. Not enough arguments.\n"
 printf "%b" "usage: myscript file1 op file2\n"
 exit 1
fi
复制代码

以下是一个带有 elif(bash 中的 else-if)和 else 子句的完整if 语句。如下:

if (( $# < 3 ))
then
 printf "%b" "Error. Not enough arguments.\n"
 printf "%b" "usage: myscript file1 op file2\n"
 exit 1
elif (( $# > 3 ))
then
 printf "%b" "Error. Too many arguments.\n"
 printf "%b" "usage: myscript file1 op file2\n"
 exit 2
else
 printf "%b" "Argument count correct. Proceeding...\n"
fi
复制代码

关于if,我们有两个问题需要明白,分别是:

  • if 语句的基本结构
  • if 表达式的不同语法(括号或方括号,运算符或选项)

5、if的基本结构

按照 bash 手册页中的描述,if 语句的一般形式如下所示。

if list; then list; [ elif list; then list; ] ... [ else list; ]
fi
复制代码

[ 和 ] 用于划分语句中的可选部分(例如,有些 if 语句中就没有else 子句)。我们先来看看不带任何可选部分的 if 语句。

最简单的 if 语句形式如下所示。

if list; then list; fi
复制代码

在 bash 中,和换行符一样,分号的作用也是结束某个语句。我们可以用分号将解决方案部分中的示例塞进更少的行中,但使用换行符的可读性更好。then list 的存在看起来是有意义的,其中的语句在 if 条件为真的情况下执行(我们也可以从其他编程语言中猜测出来)。但是,if list 算是怎么回事?难道不应该是 if expression 吗?

没错,但这是 shell,一个命令处理器。它的主要任务就是执行命令。因此,if 后面的 list 就是放置命令列表的地方。你可能会问,决定分支走向(then 子句或 else 子句)的是什么呢?答案是list 中最后一个命令的返回值。

我们通过一个有点奇怪的示例来说明这一点。如下:

$ cat trythis.sh // 查看脚本内容,如下所示

if ls; pwd; cd $1; 

then

 echo success

else

 echo failed

fi

// 执行脚本,传递一个参数
$ bash ./trythis.sh /tmp

复制代码

在这个奇怪的脚本中,shell 会在选择分支前执行 3 个命令(ls、pwd、cd),其中 cd 命令的参数是调用该脚本时所提供的第一个命令行参数。如果没有提供参数,那就只执行 cd,返回到主目录中。结果会是怎样?你可以自己试试。最终是显示“success”还是“failed”,取决于 cd 命令是否执行成功。在示例中,cd 是 if语句命令列表中的最后一个命令。如果 cd 执行失败,就转到 else子句;但如果执行成功,则选择 then 子句。

6、if中的 [] 和 (())

我们一起来看下面的例子:

if test $# -lt 3
then
 echo try again.
fi
复制代码

前面讲到if后面是list是命令列表,虽然此处不是命令列表,但有没有从中看出起码类似于单个 shell 命令(内建命令 test 接受参数并比较参数值)的东西?

在本章开头,我们给出的第一个示例中开头的 if [ $# -lt 3 ] 看起来很像test 命令。这是因为 [ 其实只是相同命令的不同名称而已。(出于可读性和美观方面的考虑,调用 [ 时还要求将 ] 作为最后一个参数。)因此,对于该语法,if 语句中的表达式其实就是一个只包含单个命令(test 命令)的列表。

在早期的 Unix 中,test 是一个独立的可执行文件,[ 只是指向该文件的链接。现在两者仍以可执行文件的形式存在,但bash 也将它们实现为内建命令。

那么 if (( $# < 3 )) 又是什么意思?

双括号是复合命令的一种。因为它会对其中的算术表达式求值,所以能在 if 语句中派上用场。这是一处比较新的 bash 改进 ,专门用于有 if 语句的场合。

可用于 if 语句的这两种语法之间的重要区别在于测试的表达方式及其能够测试的对象种类。

双括号仅限于算术表达式,方括号还可以测试文件特性,但后者的算术测试语法远不如前者方便,尤其是用括号将表达式划分成若干子表达式时。

当我们使用 [ ] 时,一定要注意空格是必须存在的,如下图:

if [ -d "/opt/" ]
复制代码

7、测试文件的特性

为了提高脚本的稳健性,你希望在读取输入文件前先检查该文件是否存在;另外,还想在写入输出文件前确认其是否具备写权限,在用cd 切换目录前看看到底有没有这个目录。这些该如何在 bash 脚本中实现呢?如下所示:

#!/usr/bin/env bash
# 实例文件:checkfile
#
DIRPLACE=/tmp
INFILE=/home/yucca/amazing.data
OUTFILE=/home/yucca/more.results

if [ -d "$DIRPLACE" ] // 判断是否目录
then
    cd $DIRPLACE
    if [ -e "$INFILE" ] // 判断文件是否存在
    then
        if [ -w "$OUTFILE" ] // 判断文件是否拥有写权限
        then
        	doscience < "$INFILE" >> "$OUTFILE"
        else
       		echo "cannot write to $OUTFILE"
        fi
    else
    	echo "cannot read from $INFILE"
    fi
else
	echo "cannot cd into $DIRPLACE"
fi
复制代码

将各种文件名引用全都放入了引号,以防路径名中包含空格。在上面的例子,我们使用了测试文件是否是目录(-d)、文件是否存在(-e)、文件是否有写权限(-w),我们也可以测试一些别的文件特性,其中有 3 个特性要用到双目运算符(接受两个文件名)。

  • FILE1 -nt FILE2 是否更新(检查文件的修改时间)。现有文件要比不存在的文件“新”。
  • FILE1 -ot FILE2 是否更旧。同样,不存在的文件要比现有文件“旧”。
  • FILE1 -ef FILE2 具有相同设备和 inode 编号(即便由不同链接所指向,也视为相同的文件)

前面使用的-e、-d、-w都属于单目运算符,其形式为 option filename,例如,if [ -e myfile ]

8、测试多个特性

前面,我们测试每个特性都是使用单独一个if语句,那么我们测试多个特性时,必须嵌套if语句吗?

使用 -a(逻辑与)和 -o(逻辑或)运算符将多个测试条件组合成一个表达式。例如:

if [ -r $FILE -a -w $FILE ]
复制代码

该 if 语句会测试指定文件是否可读并且可写。

测试时,为啥不加上-e呢?因为所有的文件测试条件都隐含了该文件存在的测试,所以测试文件可读性时不用测试文件是否存在。如果文件不存在,自然也就不可读。这些逻辑运算符(-a 表示 AND,-o 表示 OR)可用于所有的测试条件,并不局限于文件测试。

同一个语句中可以出现多个 AND/OR。你可能要用括号来获得正确的优先级,比如 a and (b or c),但一定要记得在括号前加上反斜杠或将括号放进引号,以消除其特殊含义。如下:

if [ -r "$FN" -a \( -f "$FN" -o -p "$FN" \) ]
复制代码

9、测试字符串特性

你希望在使用字符串前先检查一下它们的值。这些字符串可以是用户输入、读入的文件或传入脚本的环境变量。如何用 bash 脚本实现呢?

你可以在 if 语句中使用单方括号形式的 test 命令进行一些简单的测试,其中包括检查变量是否包含文本以及两个变量中的字符串是否相同。如下脚本所示:

# 使用命令行参数
VAR="$1"
#
# if [ "$VAR" ]这种形式通常也管用,但并不是一种好的写法,加上-n会更清晰

if [ -n "$VAR" ]
then
	echo has text
else
	echo zero length
fi

if [ -z "$VAR" ]
then
	echo zero length
else echo has text
fi
复制代码

长度为 0 的变量有两种:设置为空串的变量和不存在的变量。示例中的测试并不区分这两种情况。它只关心变量中是否有字符存在。

重要的是要将 VAR放进引号,否则测试会被一些怪异的用户输入干扰。如果VAR 放进引号,否则测试会被一些怪异的用户输入干扰。如果 VAR放进引号,否则测试会被一些怪异的用户输入干扰。如果VAR 的值是 x -a 7 -lt 5 且没有使用引号,那么下列语句:

if [ -z $VAR ]
复制代码

就会变成(在变量扩展之后):

if [ -z x -a 7 -lt 5 ]
复制代码

10、测试等量关系

你想要检查两个 shell 变量是否相等,但是存在两种测试运算符:-eq 和 =(或 ==)。该用哪个呢?

你需要的比较类型决定了该用哪种运算符。

  • 如果是进行数值比较,可以使用 -eq 运算符。
  • 如果是进行字符串比较,则使用 =(或 ==)运算符。

下面,我们通过一个简单的脚本例子来演示,如下:

#
# 老生常谈的字符串与数值比较
#

VAR1=" 05 "
VAR2="5"
printf "%s" "do they -eq as equal? "
if [ "$VAR1" -eq "$VAR2" ]
then
	echo YES
else
	echo NO
fi

printf "%s" "do they = as equal? "

if [ "$VAR1" = "$VAR2" ]
then
	echo YES
else
	echo NO
fi
复制代码

如果,我们运行脚本,则会得到如下结果:

$ ./脚本名
do they -eq as equal? YES
do they = as equal? NO
$
复制代码

尽管两个变量的数值相等(5),但从字符角度来看,前导字符 0 和空白字符意味着这两个字符串并不相同。

= 和 == 都可以使用,但 = 符合 POSIX 标准,可移植性更好。

使用if,我们可以在脚本中进行分支判断。但是对于系统而言,循环同分支一样是常见需求。所以Shell一样支持循环操作

11、循环一段时间

对于算术条件,使用 while 循环:

while (( COUNT < MAX )) // 判断条件是否成立
do // 语法要求,以do开始
 some stuff
 let COUNT++
done // 语法要求,以done结束
复制代码

对于文件系统相关的条件:

while [ -z "$LOCKFILE" ]
do
 some things
done
复制代码

第一个 while 语句中的双括号界定了算术表达式,这很像 shell 变量赋值中用到的 (())。双括号内出现的变量名表示取值。也就是说,不需要写成(( ))。双括号内出现的变量名表示取值。也就是说,不需要写成 (())。双括号内出现的变量名表示取值。也就是说,不需要写成VAR,直接在括号中使用 VAR就行了。

while [ -z"$LOCKFILE" ] 中的方括号和 if 语句中的一样,等同于使用 test 命令。

使用(( )) 时,shell 会对其中的表达式求值,如果结果为非0,那么 (( )) 就返回 0;如果结果为 0,则返回 1。这意味着我们可以像 Java 或 C 程序员那些书写表达式,但 while 语句沿用的仍旧是 bash 那一套,视 0 为真。实际上,这意味着我们可以编写一个无限循环:

while (( 1 ))
do

 ...dosomething

done
复制代码

12、循环若干次

如果需要循环够一定次数。可以使用 while 循环,在计数时进行测试,不过编程语言中的 for 循环正是针对这种情况设计的。那么,如何在 bash 中实现呢?

使用 for 循环语法的一种特例,看起来和 C 语言中的差不多,但使用的是双括号。

for (( i=0 ; i < 10 ; i++ )) ; do echo $i ; done
复制代码

在早期的 shell 版本中,for 循环只能按照固定的列表项进行迭代。和文件名之类的打交道时,shell 脚本是面向单词的,就此而言,这算得上是一个不错的创新。但如果需要计数,用户会发现自己可能写出了如下代码。

for i in 1 2 3 4 5 6 7 8 9 10
do
 echo $i
done
复制代码

看起来还行,尤其是循环次数不多时。可是说实话,换成 500 次循环可就不好使了。

bash 2.04 版开始引入一种 for 循环的变体,语法与 C 语言类似。其一般形式如下所示。

for (( expr1 ; expr2 ; expr3 )) ; do list ; done
复制代码

双括号表明这是算术表达式,在其中引用变量时,不用加 (但(但 (但1等位置参数除外),只要是 bash 中出现双括号的地方,均是如此。该表达式是整数表达式,可以使用包括逗号(用于在一个表达式中放入多个操作)在内的大量运算符。

for (( i=0, j=0 ; i+j < 10 ; i++, j++ ))
do
 echo $((i*j))
done
复制代码

for 循环先初始化了两个变量(i和i 和 i和j),然后在第二个更复杂的子表达式中对 i和i 和 i和j 求和,接着判断是否小于 10。第三个子表达式再次用逗号运算符累加这两个变量。

13、在循环中使用浮点值

带有算术表达式的 for 循环只能执行整数运算。如果是浮点值,该怎么办呢?

如果系统提供了 seq 命令,则可以用它来生成浮点值。

for fp in $(seq 1.0 .01 1.1)
do
 echo $fp; other stuff too
done
复制代码

seq 命令会生成一系列浮点值,每行一个。该命令的参数依次是起始值、增量、结束值。$() 在子 shell 中执行命令,返回结果中的换行符会被空白字符替换,因此,就 for 循环而言,每个值都是字符串。

shell从入门到精通(11)Shell算术运算 如果要执行算术运算(数学计算),就离不开各种运算符号,和其他编程语言类似,Shell 也有很多算术运算符,下面就给大家介绍一下常见的 Shell 算术运算符,如下表所示。换句话说,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。这是因为,在 Bash Shell 中,如果不特别指明,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。两边的数据(数值或者变量)当做字符串,把。 阅读详情

相关推荐

shell中算术运算符

1.shell中的算术运算符和c语言中差不多,优先级和顺序也相同;如下表(其中优先级由高至低) 运算符 意义 顺序 ++ - - 增加及减少,可前置/可结尾 由左至右 + 一元正号 由右至左 - 一元负号 由右手至左 ! 逻辑与 由右手至左 ~ 位的取反 由右手至左 / % 乘...

Postgres 数据库内核开发工程师 1161

Shell编程2_运算符

Shell运算符 一、算数运算符 算术运算符顾名思义,其就是进行加减乘除数值运算,在 shell 中,bash 不支持原生的数学运算,需要利用第三方工具来如let,expr等来实现。 1.expr和let 利用let对数值进行运算,let C=$A+$B,let运算后需要将其赋值给一个变量。 [root@master ~]# A=1 [root@master ~]# B=2 [root@master ~]# let C=${A}+${B} [root@master ~]# ech...

swadian2008的博客 895

工程伦理-知识点汇总

工程伦理-知识点汇总

m0_46091747的博客 1万+

Shell编程 算数和字符串运算(Ubuntu)

前序:shell中的输入和输出 1.输入 read var read var1 var2 两个值之间用空格或者tab键 不能用回车 read -p "提示字符串" var read -t 秒 var 多少秒后如果没有输入就结束 read -n num var 输入num个字符后结束输入 read -s var 输入的内容不回显 类似于输入密码 2.输出 -----> echo 1.sh...

柒哥的博客 1798

群晖NAS搭建Git Server避坑指南:从SSH配置到权限管理的完整流程

本文提供了一份详尽的群晖NAS搭建Git Server实战指南。文章从启用并安全配置SSH服务入手,深入解析了用户权限体系设计、SSH连接与仓库初始化、客户端SSH密钥配置等核心步骤,并提供了常见错误排查与生产环境加固方案,帮助开发者成功构建私有、安全的代码托管平台。

rock5的博客 420

硕士论文排版救星:用Mathtype一键搞定所有公式格式(附样式预设文件)

本文详细介绍了如何使用Mathtype的样式预设和批量格式化功能,快速统一硕士论文中的公式格式。通过创建标准样式预设文件和一键批量处理,解决公式字体、大小、间距不统一的问题,确保符合学术规范要求,大幅提升论文排版效率。

weixin_30772105的博客 941

13种Shell逻辑与算术,能写出5种算你赢!

相较于最初的 Bourne shell,现代 bash 版本的最大改进之一体现在算术方面。早期的 shell 版本没有内建的算术功能,哪怕是给变量加1,也得调用单独的程序来完成。 1、算术方法一: $(( )) 只要都是整数运算,就可以在 $(( )) 的算术表达式内使用所有的标准运算符。还有一个额外的运算符:可以用** 进行幂运算,如下: COUNT=$((COUNT + 5 + MAX * 2))或者: MAX=$((2**8))$(( )) 表达式内不需要使用空格,不过在运算符和操作数两边加上空格也无

博学谷狂野架构师的博客 922

Ubuntu 18.04下Freesurfer 7.2.0安装全攻略:从下载到环境配置一步到位

本文详细介绍了在Ubuntu 18.04系统上安装Freesurfer 7.2.0的完整流程,包括系统准备、依赖安装、下载解压、环境配置、许可证获取及性能优化。Freesurfer作为神经影像分析的重要工具,支持皮层重建和体积分割等复杂任务,适用于阿尔茨海默症等神经系统疾病研究。指南还提供了常见问题解决方案和实际应用案例,帮助用户快速搭建高效的神经影像分析平台。

omega的博客 996

Shell 脚本运算符详解(一):算术运算符全解析

本文介绍了Shell脚本中常用的算术运算符及其使用方法。主要内容包括加法、减法、乘法、除法、取余、自增和自减等基本运算符的功能说明和示例代码。文章对比了let、(( ))和$(( ))三种算术运算方式的区别与适用场景,推荐使用双括号(( ))结构进行算术运算。最后通过一个综合脚本示例演示了多种算术运算符的实际应用,并提示读者可以结合read命令实现交互式输入计算。文章还指出Shell的除法结果为整数,不支持浮点运算,并列出了一些进阶运算符(如幂运算、位运算)供了解。

小先森 1820

Sentinel--哨兵系列数据下载地址及流程更新【202310】

哨兵系列数据下载地址及流程更新。哨兵系列卫星作为哥白尼计划的一部分,主要目标便是对地球的观测任务。哥白尼计划由三部分组成:空间部分(哨兵系列太空任务与其他太空机构任务)、测量部分(提供海洋、大陆表面和大气信息的陆基和机载数据收集网络)、数据管理与全球共享。

twg666的博客 3万+

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第七讲)

默认是第一种键盘模式,当需要切换模式,进入到ta_event_cb函数修改模式,下面代码以数字模式举例子lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);在该界面中可以设置键盘文字的大小和文本类型,最下方判断键盘是否支持中文输入(中文输入,当汉字库不够大时,用户点击中文输入会少很多字)。//当LV_USE_KEYBOARD为1时启用虚拟键盘,LV_USE_ZH_KEYBOARD为1时支持中文输入。随后在系统设置界面中点击项目选项,选择显示键盘。

weixin_38828382的博客 1416

shell脚本——算术运算和逻辑运算

一、实现算术运算 1.let var=算术表达式 2.((var=算术表达式)) 3.var=$[算术表达式] 4.var=$((算术表达式)) ................................. 乘法符号有些场景中需要转义 内建的随机数生成器变量: $RANDOM 取值范围:0-32767 示例:生成 0-49之间的随机数 echo $[$RANDOM%50]] 增强型赋值: i+=10 相当于 i=i+10 i-=j 相当于 ...

weixin_58519482的博客 741

【OpenClaw从入门到精通】第26篇:从0到1构建OpenClaw二次发行版——企业专属AI平台实战指南(2026实测)

本文基于OpenClaw 2026.3.7开源内核,聚焦企业级AI平台的二次发行构建,从技术原理、实操流程到商业落地提供完整方法论。核心围绕“内核层-能力层-产品层”三层架构,详解源码编译、私有化部署、企业级特性开发(数据合规、国产化适配、业务系统集成)、产品化包装等关键步骤,并通过审计行业“智审助手”虚拟实战案例具象化落地路径。文章兼顾新手入门与进阶提升,提供可直接复用的代码、配置文件及执行结果,解决企业对AI Agent“开箱即用”“数据不出域”“业务适配”的核心诉求,助力开发者快速打造企业专属AI平台

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 713

shell 中的算术运算

工作中经常会写一些shell脚本来完成任务,在编写shell的过程中常常涉及一些算术运算,下面我就对经常用到的几种算术运算命令做简单的总结。   常用的算术运算命令有 expr , bc,let,$(()) 1.  let   let 命令是我在shell中用到最多的一个命令,它简单易用,支持自加自减操作。我经常用它在for和while循环中实现整数值的加一操作。

gchb9527的专栏 4054

DA14531-蓝牙温度传感器-真实案例

传感器低功耗系统功能需求: 1)平时为关机状态,通过GPIO管脚唤醒,霍尔器件触发拉低IO唤醒系统。 2)唤醒后,进入BLE广播状态,等待主机连接,若一分钟无被主机连接,则进入关机状态。 3)连接后(0.1mA),每秒上报一次温度值,同时主机可以读取设备读电池电量。 4)连接断开后,1分钟后,设备进入关机(1uA)。 5)LED灯在连接时点亮,断开灭,低电量时会闪,提示闪烁。

hejinwu1314的博客 858

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux expr 命令详解:Shell 脚本算术运算与字符串处理

expr 是 Unix/Linux 命令行工具,用于整数运算、字符串处理和逻辑比较,需空格分隔元素且特殊字符需转义。支持算术(+ - \* / %)、字符串(匹配、子串、长度)和逻辑运算(= != > < & |)。现代 Shell 内置算术更高效,但 expr 在兼容性和特定字符串操作中仍有价值。注意仅支持整数,浮点数需其他工具。

qq_36742166的博客 153

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Shell 运算符完全指南

本文系统介绍了Bash Shell中的各类运算符,包括算术运算、比较运算、逻辑运算、位运算、字符串运算和文件测试运算符。详细说明了每种运算符的语法、用法、优先级及典型应用场景,通过示例代码演示了不同运算符的使用方法。特别强调了数值比较与字符串比较的区别,以及逻辑运算符在不同环境下的差异。此外,还介绍了复合赋值运算符、自增自减运算符以及短路求值等实用技巧,帮助读者全面掌握Shell脚本中的运算逻辑。

vortex5的博客 1423

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

shell之常用编程语法

文章目录1.shell编程规范2.变量2.1环境变量2.2位置变量2.3预定义变量2.4自定义变量3.算术运算4.内置测试判断5.数值比较6、字符串比较7.文件判断8.逻辑运算符9.date时间获取10.字符串操作11.数组12.控制语句12.1 for循环12.2while循环12.3 if条件判断12.4 case 条件选择13.函数14.awk文本扫描处理15.sed流编辑器16.计划任务1...

君永夜 2482

**shell中if语句的使用&&逻辑判断**

shell中if语句的使用&&逻辑判断 转自:https://blog.51cto.com/lovelace/1211353 < 希望对你有所帮助 > bash中如何实现条件判断? 条件测试类型: 整数测试 字符测试 文件测试 一、条件测试的表达式: [ expression ] 括号两端必须要有空格 [[ expression ]] 括号两端必须要有空格 test ...

qq_44614948的博客 6399

shell编程规范与变量

Shell脚本是一种用于编写和执行命令序列的脚本语言Shell脚本可以通过文本文件的形式保存,并使用shell解释器来执行。Shell脚本可以包含命令、条件判断、循环、函数等,可以使用变量、数组、字符串处理、文件操作等功能。不要使用系统的命令作为变量名不要使用中文不能特殊符号开头 可以用_来开头在指定变量名的时候有一个默认的规则:计算机:computer 学生:student a= b=要有注释,还要注意前后一致只能包含字母、数字、下划线严格区分大小写。

Tpw12qaz的博客 1101

Linux之shell命令

1、shell入门 在计算机科学中,shell就是一个命令解释器。 shell是位于操作系统和应用程序之间,是他们二者最主要的接口。 shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序。 一句话,shell就是在操作系统和应用程序之间的一个命令翻译工具 2、shell的使用方式 手工方式: 手工敲击键盘,直接输入命令,按Enter后。执行命令,显示命令执行的结果.重点:逐行输入命令、逐行进行确认执行 脚本方式: 我们把手工执行的命令,写到一个

rookie_shun的博客 10000

Linux的Shell编程Part3:基本运算(算术运算、关系运算、布尔运算、文件测试运算及字符串运算)

一、算术运算 1、+ 加 expr求值操作 # 定义两个变量 a=6 b=4 # 加法 expr求值 value=`expr $a + $b` echo "$a+$b=$value" 输出:6+4=10 注:不是单引号 而是斜撇 键位在数字1的左边 若为单引号会输出1+2=expr 1 + 2 会把expr当作字符串输出 2、- 减 $[ ] # 定义两个变量 a=6 b=4 # 减法 另一种...

"✧treasure mountain✧" 7906

13、Linux-Shell02:参数传递和运算符

e是equal,g是greater,l是less,n是not,t是than,通过全称可以很容易记住缩写的含义。-f、-d、-b、-c:文件是否是普通文件、是否是目录、是否是块设备文件、是否是字符设备文件。区别在于$*把获取到的所有参数当成一个整体,而$@把获取到的每个参数当成独立的引用。执行脚本时可以为脚本文件传递参数,在脚本中可以处理这些参数。-r、-w、-x:文件是否可读、可写、可执行。-s、-e:文件是否为空、文件是否存在。使用方法:[ -r $file ]$*和$@都会获取所有参数,

TRXCX的博客 657

shell逻辑运算符优先级_DAY2-step5 Python运算符:算术,逻辑,比较,赋值,成员,标识,优先级...

算术运算符算术运算符执行各种算术计算,例如加,减,乘,除,%模,指数等。示例:对于算术运算符,我们将以加法的简单示例为例,在该示例中,我们将两位数字相加4 + 5 = 9x= 4y= 5print(x + y)同样,您可以使用其他算术运算符,例如乘法(*),除法(/),减法(-)等。比较运算符这些运算符比较操作数两侧的值并确定它们之间的关系。 它也称为关系运算符。 各种比较运算符为(==,!=,&...

weixin_28788561的博客 322
上一篇: 如何把 高并发限流 实现的那叫一个优雅!
下一篇: 面试题:为什么不建议在MySQL中使用UTF-8?
Java_LingFeng
博客等级 码龄4年 505粉丝 259原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值