编写Bash脚本的基础知识
Robert从15岁开始编程,并拥有威斯康星大学的计算机科学学士学位。
括号、大括号和圆括号在编写bash脚本中扮演着重要的角色,但是由于有这么多不同的组合和用法,可能很难记住在给定的情况下使用哪一种。本文将作为Bash所有外围字符的有用参考。
[单括号]
一组单括号[]被用作test命令的方便快捷方式。所以[1 -eq 1]与测试1 -eq 1相同。如果给定语句为真,Test返回值为0,如果为假,返回值为1。单括号通常用于条件句和循环,如if, while, &&等。
test和单括号支持以下操作符:
人事处 | 描述 |
---|---|
情商 |
数值平等 |
lt |
不到 |
gt |
大于 |
= = |
字符串平等 |
! = |
字符串不平等 |
! |
否定 |
- e |
文件存在 |
- d |
检查目录 |
- f |
检查文件 |
[[双括号]]
双括号[[]]与单括号有相同的用途:它们测试给定的语句,为真返回0,为假返回1。然而,双括号更强大,支持单括号所不支持的功能。
首先,双括号接受数学表达式,而单括号不接受。例子:
双括号还支持在比较字符串时使用通配符和正则表达式。==将右侧视为模式(支持通配符),而=~将右侧视为正则表达式。例子:
{大括号}
单花括号本身用于执行命令列表。列表的返回码与上一个命令的返回码相同。
当一个美元符号放在一组单花括号之前时,它表示一个“参数展开”,其中变量被它所包含的值替换。例子:
在开始大括号后放置感叹号将参数展开变为“间接展开”。在间接展开中,将计算花括号内代码中的值,并将输出用作展开变量的名称。例子:
“子字符串展开”可以通过向展开中添加起点和长度或结束点来只获得变量的一部分。
这也适用于数组:
在展开的开头添加#将代替变量的长度,而不是变量的值。
(单括号)
单圆括号本身表示一组类似于单大括号的命令。两者的区别在于括号内的命令在一个单独的“subshell”中执行,并且变量赋值在命令执行后不会保留。
单括号也用于变量赋值来创建数组。
将一美元放在一组括号前面表示“命令替换”。命令替换的工作原理与参数展开非常相似,只是它们接受命令而不是变量名。这通常用于将命令的结果存储在变量中,或将其用作另一个命令的参数。
((双括号))
双括号集合用于计算算术表达式。注意,这只适用于整数数学。
在算术表达式之前放置美元符号将其转换为“算术展开”,允许将表达式用作命令的一部分。
没有美元符号的算术表达式不能在命令中使用,会导致错误。
双括号也可以用于for循环。
有关大括号、方括号和圆括号或Bash的详细信息,请参阅Bash手册.