文章目录
- shell数组
- 读取数组
- 关联数组
- 获取数组的长度
- Shell运算符
- 算术运算符
- 关系运算符
- 布尔运算符
- 逻辑运算符
- 字符串运算符
- 文件测试运算符
- Shell echo命令
- 1.显示普通字符串
- 2.显示转义字符
- 3.显示变量
- 4.显示换行
- 5.显示不换行
- 6.显示结果定向至文件
- 7.原样输出字符串,不进行转义或取变量(用单引号)
- 8.显示命令执行结果
- Shell read命令
- read 命令的用法为
- Shell read 命令支持的选项
- Shell printf命令
- printf 命令的语法
- 格式说明符
- printf 的转义序列
- Shell test命令
- 数值测试
- 字符串测试
- 文件测试
shell数组
Shell 脚本中的数组允许你存储一个元素列表,这些元素可以是数字、字符串或混合类型。Bash Shell 支持一维数组,不支持多维数组,但你可以通过模拟的方式来实现类似多维数组的功能。
在 Bash 中,数组可以通过多种方式声明和初始化。
- 直接赋值,无需声明数组大小
array_name=(element1 element2 element3 ...)
- 单独赋值,可以逐个元素地添加或修改
array_name[0]=element1
array_name[1]=element2
array_name[2]=element3
读取数组
读取数组元素值的一般格式是:
#访问特定元素
echo ${array_name[index]}
#访问所有元素
echo ${array_name[@]}
# 或者
echo ${array_name[*]}
关联数组
Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。
关联数组使用 declare 命令来声明,语法格式如下:
#声明关联数组
declare -A assoc_array
#赋值
assoc_array[key1]="value1"
assoc_array[key2]="value2"
#访问
echo ${assoc_array[key1]}
#遍历
for key in "${!assoc_array[@]}"; do
echo "$key -> ${assoc_array[$key]}"
done
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
echo ${#array_name[@]}
# 或者
echo ${#array_name[*]}
Shell运算符
Shell 和其他编程语言一样,支持多种运算符,包括:
- 算数运算符
- 关系运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ')
算术运算符
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
注意:条件表达式要放在方括号之间,并且要有空格,例如: [
a
=
=
a==
a==b] 是错误的,必须写成 [ $a == $b ]。
关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
布尔运算符
下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
逻辑运算符
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
字符串运算符
下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。
属性检测描述如下:
Shell echo命令
echo 命令是 Shell 编程和命令行操作中非常基本且常用的一个命令,用于在终端或文件中输出文本、变量、环境变量或命令的执行结果。其基本语法如下:
echo [选项] [字符串]
- -n:不输出行尾的换行符。
- -e:启用转义字符的解释。
- -E:明确禁止转义字符的解释(默认行为,但在某些情况下可能需要明确指定)。
可以使用echo实现更复杂的输出格式控制。
1.显示普通字符串
这里的双引号完全可以省略。
2.显示转义字符
3.显示变量
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。
4.显示换行
5.显示不换行
6.显示结果定向至文件
7.原样输出字符串,不进行转义或取变量(用单引号)
8.显示命令执行结果
Shell read命令
Shell中的read命令是一个非常强大的工具,用于从标准输入(通常是键盘)或其他文件描述符中读取数据,并将读取的数据赋值给变量。read命令在Shell脚本编程中尤其重要,因为它允许脚本与用户进行交互或处理来自文件的数据。以下是关于read命令的详细介绍:
read 命令的用法为
read [-options] [variable...]
- -options:指定read命令的选项,用于控制读取行为。
- variable…:一个或多个变量名,用于存储读取的数据。如果没有指定变量,则默认将读取的数据存储在环境变量REPLY中。
Shell read 命令支持的选项
Shell printf命令
printf 命令在 Shell 编程中是一个非常有用的工具,它用于格式化并打印数据。与 echo 命令相比,printf 提供了更多的格式化选项,允许你更精确地控制输出格式。printf 的语法和 C 语言中的 printf 函数非常相似。
printf 命令的语法
printf format [arguments...]
- format:定义输出格式的字符串,可以包含普通文本、格式说明符等。
- arguments…:一个或多个要打印的变量或值,它们将按照 format 指定的格式进行格式化。
格式说明符
格式说明符以 % 开头,后跟一个或多个字符,用于指定变量的输出格式。一些常见的格式说明符包括:
%s | 字符串。 |
%d、%i | 十进制整数。 |
%u | 无符号十进制整数。 |
%o | 八进制整数。 |
%x、%X | 十六进制整数(%x 使用小写字母,%X 使用大写字母)。 |
%f | 浮点数。 |
%e、%E | 科学计数法表示的浮点数(%e 使用小写字母,%E 使用大写字母)。 |
%c | 单个字符。 |
%% | 打印 % 字符本身。 |
printf 的转义序列
Shell test命令
Shell 中的 test 命令是一个用于检查文件类型并比较值的条件表达式求值工具。它用于在脚本中进行条件判断,并根据条件是否满足来执行不同的命令或脚本块。尽管 test 命令本身非常强大,但在现代 Shell 脚本中,[(通常与 ] 一起使用)是一个指向 test 命令的链接,二者在功能上几乎是等价的.
基本语法:
test expression
# 或者
[ expression ]
注意:[ 后面和 ] 前面必须有空格,因为 [ 实际上是 test 命令的一个链接,而 ] 是 test 命令的参数的一部分。