bash “ if <command>; then”语句,<command>返回0,then后面语句才执行

1,

if <command>; then 语句

  • 当 <command> 返回 0 时,表示成功 ,条件为真 ,会执行 then 分支
  • 当 <command> 返回非 0 值时,表示失败 ,条件为假 ,不会执行 then 分支

示例

复制代码
# 示例 1:命令成功(返回 0)
if ls /tmp; then
    echo "列出 /tmp 目录成功"
fi

# 示例 2:命令失败(返回非 0)
if ls /nonexistent; then
    echo "这不会执行"
else
    echo "目录不存在"
fi

# 示例 3:测试退出码
if grep "pattern" file.txt; then
    echo "找到匹配项"
fi

2,

你可以用 $? 查看上一个命令的退出状态码:

eg 1

在file文件里面查找 'pattern' 单词,实际上file文件不存在,grep返回2.

如果文件存在,grep找到返回0;grep找不到,返回1

复制代码
y@vpsaaa-0:~$ grep "pattern" file
grep: file: No such file or directory
y@vpsaaa-0:~$ echo $?
2

ls /tmp
echo $?  # 输出 0(成功)
ls /nonexistent
echo $?  # 输出非 0 值(失败,通常是 2)

3,

bash 的标准:0 表示成功/真,非 0 表示失败/假 。

这与很多编程语言(如 C)的函数返回值约定一致。

相关推荐
2501_9445215910 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理10 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
wangchunyu11412 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
程序 代码狂人13 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
meiying883814 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
@大迁世界15 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper15 小时前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
学逆向的15 小时前
C 指针常量与常量指针
c语言·开发语言·网络安全
低调滴开发16 小时前
3 行代码写崩一个函数?切片才是 Rust 字符串处理的正确姿势
开发语言·后端·rust
CodeYp201916 小时前
第15讲:二叉搜索树
开发语言·c++·二叉搜索树