shell条件测试

embedded/2025/1/14 10:38:16/

为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。 通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。条件测试在各种流程控制语句,例如 判断语句和循环语句中发挥了重要的作用,所以,了解和掌握这些条件测试是非常重要的。

1、条件测试的基本语法

在shell程序中,用户可以使用测试语句来测试指定的条件表达式的条件的真或假。当指定的条 件为真时,整个条件测试的返回值为0;反之,如果指定的条件为假,则条件测试语句的返回值为非0 值。

2、文件测试表达式

测试文件的读、写、执行等属性,不光是根据文件属性rwx的标识来判断,还要看当前执行测试的用户是 否真的可以按照对应的权限操作文件。

①test示例:

[root@localhost test3]# lltotal 0-rw-r--r--. 1 root root 0 Feb 20 10:35 file[root@localhost test3]# test -f file;echo $?0[root@localhost test3]# test -f file1;echo $?1[root@localhost test3]# test -x file;echo $?1

②[]示例(注意测试表达式和方括号两边需要有空格)

[root@localhost test3]# lltotal 0-rw-r--r--. 1 root root 0 Feb 20 10:35 file[root@localhost test3]# [ -f file ];echo $?0[root@localhost test3]# [ -f file1 ];echo $?1[root@localhost test3]# [ -w file ];echo $?0

③[[]]示例(注意测试表达式和[[]]两边需要有空格)

[root@localhost test3]# lltotal 0-rw-r--r--. 1 root root 0 Feb 20 10:35 file[root@localhost test3]# [[ -f file ]];echo $?0[root@localhost test3]# [[ -f file1 ]];echo $?1[root@localhost test3]# [[ -x file ]];echo $?1

注意:如果测试的文件路径是用变量来代替,变量一 定要加引号

3、字符串测试表达式

①test示例

[root@localhost test3]# test -n abc;echo $?0[root@localhost test3]# test -n "";echo $?1[root@localhost test3]# test -n " ";echo $?0[root@localhost test3]# test -z '';echo $?0[root@localhost test3]# test -z abc;echo $?1[root@localhost test3]# test -z ' ';echo $?1[root@localhost test3]# test abc = abcd ;echo $?    
1[root@localhost test3]# test abc=abcd ;echo $?0

②[]示例

[root@localhost test3]# [ -n '' ];echo $?1[root@localhost test3]# [ -n ' ' ];echo $?0[root@localhost test3]# [ -z '' ];echo $?0[root@localhost test3]# [ abc=abcd ];echo $?0[root@localhost test3]# [ abc = abcd ];echo $?      
1

③[[]]示例

[root@localhost test3]# [[ -n abc ]];echo $?0[root@localhost test3]# [[ -n ' ' ]];echo $?0[root@localhost test3]# [[ -n '' ]];echo $?1[root@localhost test3]# [[ abc=acd ]] ;echo $?0[root@localhost test3]# [[ abc = acd ]] ;echo $? #注意等号两边需要有空格

注意:测试对象是变量时,变量需要加引号

[root@localhost test3]# test -n $name;echo $?
0
[root@localhost test3]# test -n "$name";echo $?
1
[root@localhost test3]# [ -n $name ];echo $?
0
[root@localhost test3]# [ -n "$name" ];echo $?

4、 整数测试表达式

注意: =和!=也可在[]中作比较时使用,在[]中也可使用>和<符号,但需要使用反斜线转义,有时不转译虽然语 法不会报错,但是结果可能会不对;

在[[]]中也可使用包含-gt和-lt的符号,不建议使用;

比较符号两端也要有空格。

5、 逻辑操作符


http://www.ppmy.cn/embedded/153815.html

相关文章

【PGCCC】PostgreSQL 事务及其使用方法

在本文中&#xff0c;我们将回答所有这些问题以及更多问题&#xff0c;以帮助您开始使用 PostgreSQL 事务和实施。 什么是交易&#xff1f; 简单来说&#xff0c;事务就是对数据库中任何更改的传播。假设您向数据库添加了一个新元素 — 这是事务的一个例子。事务不一定只是单…

xcrun: error: invalid active developer path 解决

在拉取 github 代码时&#xff0c;提示如下报错&#xff1a; xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 原因是&#xff1a;这是由于 Xcode command line t…

LeetCode:39. 组合总和

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 cand…

redis:安装部署、升级以及失败回退

安装部署 一、准备工作 1. 检查系统要求 确保你的服务器满足 Redis 的基本要求: 操作系统:支持的 Linux 发行版(如 Ubuntu, CentOS)内存:至少 4GB(根据实际应用需求调整)CPU:单核或多核 CPU磁盘空间:足够的磁盘空间用于数据存储和日志记录2. 更新系统软件包 在开始…

<C++学习>C++ std 多线程教程

C std 多线程教程 理解多线程的概念 多线程是一种并发编程技术&#xff0c;它允许程序同时运行多个任务。每个线程共享同一进程的资源&#xff08;如内存&#xff09;&#xff0c;但拥有独立的执行路径。多线程编程在现代 C 中变得更加便捷和安全&#xff0c;标准库提供了强大…

卫星电话打通救灾生命线,确保“找得到人、通得上话”

从日喀则地震的救援信息&#xff0c;我们可以发现&#xff0c;应急救援卫星通信设备日益小型化、便携化、集成化&#xff0c;且国产化率大幅提升&#xff0c;与17年前汶川地震救援时所使用的体积庞大、架设复杂的卫星通信设备相比&#xff0c;如今的设备不仅在形态上更为轻巧灵…

【HTML+CSS+JS+VUE】web前端教程-8-标签之文本

常用文本标签 特别提示: 常用文本标签和段落是不同的,段落代表一段文本,而文本标签一般表示文本词汇。 <!DOCTYPE html> <html lang="en"

K8s 集群 IP 地址管理指南(K8s Cluster IP Address Management Guide)

K8s 集群 IP 地址管理指南 概述 你是否在小型初创公司或大型企业工作&#xff0c;并正在为公司评估 Kubernetes&#xff1f;你可能正在考虑运行十几个或更多的 Kubernetes (K8s) 集群。你期望每个集群支持几百个 K8s 节点&#xff0c;每个节点可能有 50 到 100 个 K8s Pod。这…