【知识】Linux将多条指令合并为一条执行
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn]
如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~
目录
1. 使用分号 ; 分隔(顺序执行,忽略前一条结果)
2. 使用 && 分隔(条件执行,前一条成功才执行后一条)
3. 使用 || 分隔(条件执行,前一条失败才执行后一条)
4. 组合使用 && 和 ||(实现简单逻辑)
5. 使用管道 | 连接(前一条输出作为后一条输入)
6. 使用大括号 { ... } 或小括号 ( ... ) 组合命令块
1. 使用分号 ; 分隔(顺序执行,忽略前一条结果)
特点:无论前一条命令是否成功,都会执行后续命令。
语法:命令1 ; 命令2 ; 命令3
示例:
# 依次创建目录、进入目录、创建文件
mkdir test ; cd test ; touch file.txt
2. 使用 &&
分隔(条件执行,前一条成功才执行后一条)
特点:只有前一条命令执行成功(返回状态码 0),才会执行下一条命令。
语法:命令1 && 命令2 && 命令3
示例:
# 先更新包列表,成功后再安装nginx
sudo apt update && sudo apt install -y nginx
3. 使用 ||
分隔(条件执行,前一条失败才执行后一条)
特点:只有前一条命令执行失败(返回非 0 状态码),才会执行下一条命令。
语法:命令1 || 命令2 || 命令3
示例:
# 尝试进入dir目录,失败则创建该目录
cd dir || mkdir dir
4. 组合使用 &&
和 ||
(实现简单逻辑)
可以结合两种符号实现更复杂的条件判断。
示例:
# 若文件存在则打印"存在",否则打印"不存在"
[ -f file.txt ] && echo "存在" || echo "不存在"
在 Shell 脚本中,
[ -f file.txt ]
中的[ ]
是 条件测试命令的语法符号,本质上是test
命令的简化写法,用于判断括号内的条件是否成立。它的作用与test -f file.txt
完全相同,只是写法更简洁,是 Shell 脚本中判断文件属性、变量状态等条件时的常用语法。需要注意的是:
[
后面和]
前面 必须有空格,否则会报错(例如[-f file.txt]
是错误写法)- 除了
-f
,还有其他常用测试运算符,如-d
(判断是否为目录)、-e
(判断文件是否存在,无论类型)等(例如[ -d dir/ ]
判断dir
是否为目录)这种语法在 Shell 脚本的条件判断(如
if
语句)中极为常见,例如:if [ -f file.txt ]; thenecho "文件存在" elseecho "文件不存在" fi
5. 使用管道 |
连接(前一条输出作为后一条输入)
特点:将前一条命令的输出结果作为后一条命令的输入(数据流传递)。
语法:命令1 | 命令2 | 命令3
示例:
# 查找包含"error"的日志行,并统计数量
cat /var/log/syslog | grep "error" | wc -l
6. 使用大括号 { ... }
或小括号 ( ... )
组合命令块
适合多条命令逻辑关联紧密的场景,可批量执行并控制作用域。
-
大括号
{ ... }
:在当前 Shell 中执行,命令间用分号分隔,结尾必须有分号,且{
后和}
前需有空格。示例:
# 创建目录并复制文件(在当前Shell执行)
{ mkdir -p testdir; cp file.txt testdir/; }
- 小括号
( ... )
:在子 Shell 中执行,不影响当前 Shell 环境(如目录切换、变量赋值)。示例:
# 在子Shell中切换目录并操作,不影响当前目录
( cd testdir; touch newfile.txt )