shell判断语法

shell中的逻辑判断

if判断格式
写法1:if ?条件 ; then ?语句; fi

#! /bin/bash
if [ -d /usr/local/zabbix ]
then
 ? echo 123
fi

写法2:if 条件; then 语句; else 语句; fi

#! /bin/bash
if [ -d /usr/local/zabbix ]
then
 ? echo 123
else
 ? mkdir /usr/local/zabbix
fi

写法3:if 条件; then 语句; elif 条件; then 语句; else 语句; fi

a=4
if [ $a -gt 3 ]
then
 ? echo "<4 && >1"
elif [ $a -gt 5 ]
 ? echo "<5 && >1"
else
 ?echo "null"
fi

if判断还支持多个条件并写,一次判断多个条件,如下面的格式

if [ -d /usr/local/zabbix ] && [ -f /usr/local/zabbix/1.txt ]
then
 ? mkdir /usr/local/zabbix/src
else
 ? exit
fi

if判断文件、目录属性

[ -f file ] 判断是否是普通文件,且存在
[ -d file ] 判断是否是目录,且存在
[ -e file ] 判断文件或者目录是否存在
[ -r file ] 判断文件是否可读
[ -w file ] 判断文件是否可写
[ -x file ] 判断文件是否可执行

判断一个文件是否是普通文件并且存在

#! /bin/bash
# 判断文件是否存在,若不存就创建
f="/usr/local/src/zabbix"
if [ -f $f ]
 then
 ?echo $f is yes
 else
touch $f

判断是否存在这个目录,如果不存在则创建

#! /bin/bash
d="/usr/local/src/zabbix"
if [ -d $d ]
 ?then
 ? ?echo $d
 ?else
mkdir $d

判断文件或目录是否存在

#! /bin/bash
# -e 不管是文件或目录,是判断是否存在
f="/usr/local/src/zabbix"
if [ -e $f ]
 then
 ?echo $f
 else
mkdir $f
fi

判断文件是否可读,目录可读则可以查看目录下文件。文件可读则可以查看内容

#! /bin/bash
f="/usr/local/src/zabbix"
if [ -r $f ]
then
echo $f
fi

if特殊用法

if [ -z "$a" ]  表示当变量a 的值为空时会怎么样
if [ -n "$a" ]  表示当变量a的值不为空
if grep -q ‘123‘ 1.txt; then 表示如果1.txt中含有‘123’的行时会怎样
if [ ! -e file ]; then ... 表示文件不存在时会怎样
if (($a<1)); then .. 等同于 if [ $a -lt 1 ]; then...
[ ] 中不能使用 <,>, ==, !=,>=,<=这样的符号

if [ -n "$a" ] ?表示当变量a的值不为空

if [ -z "$a" ] ?表示当变量a 的值为空

判断一个变量或文件不为空或存在内容

#! /bin/bash
a=4
if [ -z "$a" ]
then
 echo "no null"
else
 ?echo "The shell a is null"
fi

判断一个变量或文件不为空
可以用于文件判断,如果变量不为空则执行或继续判断。如果文件不为空则不针对这个文件做操作或终止执行

#! /bin/bash
a=/src/1.txt
if [ -n "$a" ]
then
 echo "no null"
else
 ?echo "touch /src/1.txt"
fi

将一条命令作为判断条件,判断/etc/passwd文件中是否存在root字段,如果有root字段则输出,没有则不输出

#! /bin/bash
if [ -n `grep -wq "root" /etc/passwd` ]
then
 echo "no null"
fi

grep -q 表示过滤某个文件内容的时候,不需要把结果输出显示出来
sh -x 执行过程
[[email protected] src]# sh -x 1.sh
++ grep -wq root /etc/passwd
+ ‘[‘ -n ‘]‘
+ echo ‘no null‘
no null

?cace判断

case 逻辑判断

这个脚本的目的是让用户输入一个数字,然后用这个脚本去判断用户输入的数字的一个范围

! /bin/bash
read -p " Please input a number: "n
if [ -z "$n" ] #取变量n来判断是否为空, 为空的话,说明用户没有输入数字
 then
 ?echo "Please input a number." #返回继续提示请输入数字内容
 exit 1 #然后退出来,返回一个数值 1
fi
-------------------------------------------
n1=`echo $n |sed ‘s/[-0-9]//g‘` #判断输入的是否是纯数字,echo出来并替换操作,使用sed 把所有的数字[范围0-9所有数字]替换成空, $n1这个变量就映射为空
if [ ! -z $n1 ] ?#当变量不为空时,则提示继续输入数字。当变量为空时继续往下执行,表示变量中引用的是纯数字
then
 echo "Please input a number." #继续提示输入数字
 ?exit 1 #继续退出来,返回一个数值 1
fi
--------------------------------------------
if [ $n -lt 60 ]
then
 ? tag=1
 elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
 ? tag=2
 elif [ $n -ge 80 ] && [ $n -lt 90 ]
then
 ? tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
 then
 ? tag=4
else
 ? tag=0
fi
-----------------------------------------------------
case $tag in
 ? 1)
echo " 不及格"
;;
 ? 2)
echo "及格"
;;
 ? 3)
echo "良好"
;;
 ? 4)
echo "优秀"
;;
 ? *)
echo "The number range is 0-100."
;;
esac

脚本执行过程

+ read -p ‘ Please input a number: ‘ n
Please input a number: 90
+ ‘[‘ -z 90 ‘]‘ //判断 90 变量是否存在
++ sed ‘s/[-0-9]//g‘ // $n1 清空
++ echo 90
+ n1= //$n1 为空
+ ‘[‘ ‘!‘ -z ‘]‘ // 判断是否不为空,不为空说明正常,往下匹配
+ ‘[‘ 90 -lt 60 ‘]‘
+ ‘[‘ 90 -ge 60 ‘]‘
+ ‘[‘ 90 -lt 80 ‘]‘
+ ‘[‘ 90 -ge 80 ‘]‘
+ ‘[‘ 90 -lt 90 ‘]‘
+ ‘[‘ 90 -ge 90 ‘]‘
+ ‘[‘ 90 -le 100 ‘]‘
+ tag=4 //匹配到了第4个条件
+ case $tag in
+ echo $‘\344\274\230\347\247\200‘
优秀

# 执行,输入非数字,就会提示请输入数字
[[email protected] sbin]# sh -x case.sh
+ read -p ‘ Please input a number: ‘ n
Please input a number: linux
+ ‘[‘ -z linux ‘]‘         //判断 linux 变量是否存在
++ sed ‘s/[-0-9]//g‘        //清空$n1 所有数字
++ echo linux
+ n1=linux        //$n1不为空,所以输入的不是数字有问题
+ ‘[‘ ‘!‘ -z linux ‘]‘
+ echo ‘Please input a number.‘
Please input a number.     //提示请输入数字,非其他字符串
+ exit 1

原文地址:http://blog.51cto.com/8844414/2175834

时间: 2025-01-10 14:18:22

shell判断语法的相关文章

Shell中各种判断语法

Shell判断 #按照文件类型进行判断 -b 判断文件是否存在,并且是否为快设备文件(是块设备文件为真) -c 判断文件是否存在,并且是否为字符设备文件(是字符设备文件为真) -d 判断文件是否存在,并且是否为目录文件(是目录为真) -e 判断文件是否存在,存在为真 -f 判断文件是否存在,并且是否为普通文件(存在为真) -L 判断文件是否存在,并且是否为符号链接文件(是符号链接文件为真) -p 判断文件是否存在,并且是否为管道文件(是管道文件为真) -s 判断文件是否存在,并且是否为空(非空为

shell基本语法备忘

1.第一行要写明shell种类 #!/bin/bash 2.打印输出 #!/bin/bashecho "Hello World !~" 3.变量定义 变量=前后不能有空格,字符串要用“或‘ 或  不用 变量是若定义的,不定义也可使用,既:值为空 变量可以用 { } 括起来,明确变量名称的范围 #!/bin/bashv_name="LiKun"v_id=1echo $v_name echo ${v_name}_goodecho $v_id echo $null ./t

(转)Shell基础语法

本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用的Shell环境变量有: HOME 用于保存注册目录的完全路径名. PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行. TERM 终端的类型. UID 当前用户的识别字,取值是由数位构成的字串. PWD

bash shell基础语法

本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用的Shell环境变量有: HOME 用于保存注册目录的完全路径名. PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行. TERM 终端的类型. UID 当前用户的识别字,取值是由数位构成的字串. PWD

4.Shell 判断用户的参数

1.Shell 判断用户的参数 系统在执行mkdir命令时会判断用户输入的信息,即判断用户指定的文件夹名称是否已经存在,如果存在则提示报错:反之则自动创建. Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回其他随机数值. 条件测试语法:的执行格式如图4-16所示.切记,条件表达式两边均应有一个空格 按照测试对象来划分,条件测试语句可以分为4种: 文件测试语句: 逻辑测试语句: 整数值比较语句: 字符串比较语句. 文件测试即使用指定条件来判断文件是否存在或权

shell 判断文件、目录是否存在

shell判断文件是否存在 1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var /log/httpd/access.log" 6. 7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 8. if [ ! -x "$myPath"]; then 9. mkdir "$myPath" 10

shell判断条件是否存在

1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var /log/httpd/access.log" 6. 7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 8. if [ ! -x "$myPath"]; then 9. mkdir "$myPath" 10. fi 11. 12. #

[SHELL]判断一个命令是否存在

首先要说明的是,不要使用which来进行判断,理由如下: 1.which非SHELL的内置命令,用起来比内置命令的开销大,并且非内置命令会依赖平台的实现,不同平台的实现可能不同. # type type type is a shell builtin # type command command is a shell builtin # type which which is hashed (/usr/bin/which) 2.很多系统的which并不设置退出时的返回值,即使要查找的命令不存在,

shell判断文件是否存在

转自:http://www.cnblogs.com/sunyubo/archive/2011/10/17/2282047.html 1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var /log/httpd/access.log" 6. 7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 8. if [ ! -x "