Linux Shell脚本 之 条件判断

首先想到的就是if else条件判断语句了,下面给出一个全面的语句:

 if condition
 then
     condition is true
     execute all commands up to elif statement
 elif condition1
 then
     condition1 is true
     execute all commands up to elif statement
 elif condition2
 then
     condition2 is true
     execute all commands up to elif statement
 elif conditionN
 then
     conditionN is true
     execute all commands up to else statement
 else
     None of the above conditions are true
     execute all commands up to fi
 fi

这里的condition就是用来测试的条件,大概有以下几种表现形式:

if test var == value

if test "$pass" = "tom"

if test -f /file/exists 判断某个文件是否存在

if [ $n -gt 0 ]

if [ -f /etc/resolv.conf ]

if [ -z $Str ] 判断字符串是否为空(字符串长度为0)

比较数值时用==,比较字符串时,用=,数值比较时,还可以用以下符号:

if test $n -eq 10 等于
if test $n -ge 10 大于等于
if test $n -gt 20 大于
if test $n -le 6  小于等于
if test $n -lt 0  小于
if test $n -ne -1 不等于

假如要判断一个程序执行是否正常退出:

#!/bin/bash

date
status=$?

if test status eq 0
then
    echo "执行成功"
else
    echo "执行失败"
fi

$?能获取程序执行的返回值,一般0表示成功,其他的都是失败了。那么和$?类似的还有:

$* 获取执行命令的所有参数,分隔符以系统设置为准.
[email protected] 获取执行命令的所有参数,且以空格分隔.
$# holds the number of positional parameters.
$- holds flags supplied to the shell.
$$ holds the process number of the shell (current shell).
$! hold the process number of the last background command.

对文件的判断汇总如下:

[ -a /etc/resolv.conf ] 文件是否存在
[ -e /tmp/test.txt ]    文件是否存在
[ -b /dev/zero ] 文件存在,并且是个block special file
[ -c /dev/tty0  ] 文件存在,并且是个character special file
[ -d "$DEST" ] 文件夹存在
[ -f /path/to/file ] 文件存在,且是个普通文件
[ -u /path/to/file] 文件存在,且set-user-id is set
[ -g /path/to/file] 文件存在,且set-group-id is set
[ -h /path/to/file] 文件存在,且是一个symbolic link
[ -k /path/to/file] 文件存在,且sticky位被设置过
[ -p /path/to/file] 文件存在,且是一个named pipe (FIFO)
[ -r /path/to/file] 文件存在,且是个只读文件
[ -w /path/to/file] 文件存在,且文件可写
[ -x /path/to/file] 文件存在,且可执行[ -s /path/to/file] 文件存在,且文件大小大于0
[ -t /path/to/file] True if file descriptor fd is open and refers to a terminal[ -O /path/to/file] True if file exists and is owned by the effective user id [ -G /path/to/file] True if file exists and is owned by the effective group id [ -L /path/to/file] True if file exists and is a symbolic link [ -S /path/to/file] True if file exists and is a socket [ -N /path/to/file] True if file exists and has been modified since it was last read.

最后做个小的总结,总体上来看条件判断分为整数比较、字符串比较以及文件的比较,文件的比较条件虽然比较多,但是常用的可能不会很多,而且很多比较符号的字母就能看出其比较的含义。

时间: 2024-07-31 14:31:22

Linux Shell脚本 之 条件判断的相关文章

Shell脚本IF条件判断和判断条件总结

转自:http://m.jb51.net/article/56553.htm 这篇文章主要介绍了Shell脚本IF条件判断和判断条件总结,本文先是给出了IF条件判断的语法,然后给出了常用的判断条件总结,需要的朋友可以参考下 前言:      无论什么编程语言都离不开条件判断.SHELL也不例外. if list then           do something here       elif list then           do another thing here       e

linux shell中的条件判断

1. 退出状态 在Linux系统中,每当一条命令执行完成后,系统都会返回一个退出状态,这个状态被存放在$? 这个变量中,是一个整数值,我们可以根据这个值来判断命令运行的结果是否正确. 通常情况下,退出状态值为0,表示执行成功,不为0的时候表示执行失败. POSIX规定的退出状态和退出状态的含义: 0       运行成功 1-255   运行失败,脚本命令.系统命令错误或参数传递错误 126     找到了该命令但无法执行 127     未找到要运行的命令 128     命令被系统强行结束

Shell脚本编程---条件判断if

SHELL脚本编程---判断 1.条件判断 条件判断在bash分为整数判断,字符判断和文件判断. 1-1条件判断的表达式: ① [ expression ] (注意单词词头和词尾都需要空格) ② [[ expression ]](注意同上) ③ test expression 1-2 整数比较 ① -eq  测试两个数是否相等,相等为真,不等为假 ② -ne  测试两个数是否不等, 反之. ③ -gt (大于),-lt (小于),-ge(大于或等于),-le(小于或等于) 逻辑与:&&  

shell脚本之条件判断

脚本:命令的堆砌 任何脚本的首行: #!/bin/bash :也就是解释器路径 除此之外前面加#号的为注释 脚本执行之前要给执行权限:chmod +x 文件名 bash中实现条件判断: 条件测试类型: 整数测试 字符测试 文件测试 条件测试表达式: [ expression ] [[ expression ]] test expression 整数比较: -eq:测试两个整数是否相等:比如$a -eq $b,相等返回0 -ne:测试两个整数是否不等:不等为真,相等为假 -gt:测试一个数是否大于

linux shell编程 之 条件判断

条件判断:

《跟老男孩学Linux运维之shell编程实战》-第五章 shell脚本的条件测试

本文的知识点是关于shell脚本的条件测试的相关内容. 通常在shell脚本中我们需要做各式各样的条件判断,比如,测试一个文件是否存在.是否为文件或目录.是否 具有执行权限等等,所以在shell脚本中,条件判断还是至关重要的.接下来我们进入正题:shell脚本的条件测试. 1.在bash编程中,条件测试常用的语法形式如下表: 提示: 语法1中的test命令和语法2中的[]是等价的.语法3中的[[]]双中括号为扩展的test命令. 语法4中的(())常用于计算. 在双中括号[[]]中可以使用通配符

Linux shell脚本判断服务器网络是否可以上网

Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www.baidu.com,从而判断服务器网络状态是否可以畅通的 网络状态判断 #!/bin/bash #检测网络链接畅通 function network() { #超时时间 local timeout=1 #目标网站 local target=www.baidu.com #获取响应状态码 local

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本流程控制

博主搬家至51CTO,初来乍到,请多指教. 此次我们来通过实例解析Linux shell脚本流程控制 Linux shell脚本流程控制可分为三类:顺序执行,条件选择执行,循环执行 顺序执行:简单理解就是逐行执行脚本内容,逐行解读,逐行执行.(此处不做实例解析) 条件选择执行:可以理解为先进行某一条件的判断选择,再决定执行怎样的脚本内容.常见语句if case 条件选择语句:if if语句用法: 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件