从0开始学习Linux——Shell编程详解【02】

期目录:

从0开始学习Linux——简介&安装

从0开始学习Linux——搭建属于自己的Linux虚拟机

从0开始学习Linux——文本编辑器

从0开始学习Linux——Yum工具

从0开始学习Linux——远程连接工具

从0开始学习Linux——文件目录

从0开始学习Linux——网络配置

从0开始学习Linux——防火墙配置

从0开始学习Linux——系统服务管理

从0开始学习Linxu——系统常用命令

从0开始学习Linux——进程管理

从0开始学习Linux——用户管理

从0开始学习Linux——文件管理

从0开始学习Linux——Shell编程详解【01】

 上期教程我们了解了Shell编程的概念以及变量,这节教程我们继续学习Shell编程。

一、数据类型

与传统的编程语言不同,Shell 编程是基于命令行解释器的,并且它不像 C 或 Java 语言那样有严格的静态数据类型。Shell 中的“数据类型”相对松散,主要依赖于变量的上下文来确定其行为。

注意:这里我们的所有内容但是基于Centos7的Bash Shell进行讲解的。

在Shell 中,变量并不需要声明类型,变量的类型由其值和用途决定。

1.1 字符串

字符串是一种非常常见的数据类型。字符串可以是字母、数字、符号等字符的组合。Shell 默认所有的变量都可以是字符串类型,除非我们明确将其当作其他类型(如整数)使用。

 1.2 整数

整数通常用于数学运算。Shell本身并没有专门的“整数”类型,但我们可以通过(())语法或let命令进行整数运算。

1.3 数组

Shell支持一维数组,但不支持真正的多维数组。数组索引从 0 开始。

 1.4 布尔值

Shell中没有专门的布尔类型,布尔值通常通过 0(代表 true)和非 0 值(代表 false)来表示。Bash 使用命令的退出状态码来表示布尔值:0 表示成功或 true,其他值表示失败或 false。

1.5 空值

如果一个变量没有被初始化或赋值,则该变量的值为 "空"。如果我们尝试使用未定义的变量,Bash 通常会将其视为空字符串。

二、运算符

2.1 算数运算符

算术运算符用于执行整数数学运算。可以在(())或者$(())中使用。

运算符描述示例
+加法((a + b))
-减法((a - b))
*乘法((a * b))
/除法((a / b))
%取余((a % b))
++自增((a++))((++a))
--自减((a--))((--a))

 当然我们也可以使用let或者expr命令。

 let命令和expr命令区别如表所示:

特性letexpr
类型内建Shell命令外部命令
运算符的书写方式不需要空格运算符两边必须有空格
支持的运算类型整数运算整数运算、字符串操作等
结果输出无输出(直接修改变量)通过命令替换返回结果
变量引用无需 $,直接使用变量名需要使用 $ 引用变量

2.2 关系运算符

关系运算符用于比较数字值。

运算符描述示例
-eq等于[[ $a -eq $b ]]
-ne不等于[[ $a -ne $b ]]
-lt小于[[ $a -lt $b ]]
-le小于或等于[[ $a -le $b ]]
-gt大于[[ $a -gt $b ]]
-ge大于或等于[[ $a -ge $b ]]

 2.3 逻辑运算符

2.3.1 与运算

与运算符“&&”用于同时检查多个条件,只有当所有条件都为真时,整体判断才为真。

command1 && aommand2

只有command1成功(返回值为0)时,才会执行command2。也可以用于多条件判断,所有条件成立时,执行后续命令。

对于&&运算我们只需要记住双真则真,一假则假。

2.3.2 或运算

或运算符“||”用于检查多个条件,只要有一个条件为真,整体判断就为真。

command1 || aommand2

对于或运算符我们只需要记住一真则真,双假则假。

2.3.3 非运算

非运算“!”用于取反逻辑,它会反转一个条件的结果。即如果条件为真,则返回假,反之亦然。

!command1

2.4 文件测试运算符

文件测试运算符用于检查文件的属性,如是否存在、是否为目录等:

  • -e:判断文件是否存在
  • -f:文件是否是常规文件
  • -r:文件是否可读
  • -w:文件是否可写
  • -d:文件是否是目录
  • -x:文件是否可执行
  • -s:文件是否为非空文件

2.5 字符串比较运算符

字符串比较运算符用于比较两个字符串:

  • = 或 ==:用于比较两个字符串是否相等
  • !=:用于判断两个字符串是否不相等
  • > 或 <:按字典顺序比较
  • -z:判断字符串是否为空
  • -n:判断字符串是否为非空

2.6 括号 () 和大括号 {} 组合使用

括号()和大括号{}用于控制多个命令的执行顺序。

  • 圆括号():在子shell 中执行命令。
  • 大括号{}:在当前 shell 中执行命令,命令之间用分号 ; 分隔。

2.6.1 括号()

括号()在Shell编程中起着多种作用。

1、子 Shell:

使用()可以在子 Shell 中执行一组命令。子 Shell 是一个独立的进程,它有自己的环境,不会影响父 Shell 的环境变量或状态。

例如:

(echo "This is a subshell"; ls)

上述命令在子 Shell 中执行echo和ls命令。即使有环境变量设置变化,也不会影响父 Shell。

2、命令组:

使用圆括号可以将多个命令组合在一起,作为一个整体执行。

(cd /tmp && ls)

上述命令会在子 Shell 中执行cd /temp和ls,但不会影响当前 Shell 的工作目录。

3、后台执行:

当我们将命令放在圆括号中时,可以让整个命令组在后台运行。

(sleep 10; echo "Done") &

上述命令会在后台启动一个子 Shell,执行sleep 10和echo "Done",父 Shell 会继续执行下一个命令。

2.6.2 大括号{}

1、命令组:

使用大括号{}可以将多个命令组合在一起执行,但与圆括号的区别在于,大括号不会启动新的子 Shell。命令将在当前 Shell 中执行。

{ echo "Hello"; echo "World"; }

上述命令将在当前 Shell 中依次执行echo命令,输出Hello和World。

注意:大括号中的命令之间用分号 ; 分隔,且在大括号的两侧必须加上空格或分号。

还需要注意的是命令组里面的命令是按照顺序执行的。

2、参数扩展:

大括号还可以用来进行参数扩展,用于生成多个文件名或字符串。

echo file{1,2,3}.txt

上述命令将输出为:file1.txt file2.txt file3.txt。

在Shell编程中括号()和花括号{}可以结合起来一起使用。

这节教程就先到这里了,更多内容将在后续教程中展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值