shell条件判断

条件判断式

只要讲到程序的话,那么条件判断式,亦即是if then这种判别式肯定一定要学习的,另外一种是case...esac

if....then

这个是if...then 是最常见的条件判断式了,它分为单分支条件判断式,双分支条件判断式,多分支条件判断式

单分支条件判断语句:

if [ 条件判断式 ]

then

输出内容

fi

双分支条件判断式:

if [ 条件判断式 ]

then

输出内容

else

输出内容

fi

多分支条件判断式

if [ 条件判断式 ]

then

输出内容

elif [ 条件判断式 ]

then

输出内容

else

输出内容

fi

对于条件判断式里面的对比常见的有3种方式,分别是数值对比、字符对比、文件对比

数值对比:

整数对比

-eq:测试两个整数是否相等,比如$A -eq $B

-ne:测试两个整数是否不等:不等,为真:相等,为假

-gt:测试一个数是否大于另一个数:大于,为真:否则,为假

-lt:测试一个数是否小于另一个数:小于,为真:否则,为假

-ge:大于或等于

-le:小于或等于

字符对比:

STRING1 = STRING2 :表示字符相等

STRING1 != STRING2:表示字符不相等

文件对比:

-e:表示文件是否存在

-f:表示文件存在且是一个普通文件

##还有很多选项,以上两个是比较常用的

练习:写一个脚本

判断当前系统上是否有用户默认shell为bash:

如果有,就显示有多少个这类用户:否则,就显示没有这类用户

[[email protected]_2 ~]# cat ba.sh

#!/bin/bash

bashuser=`grep "\<bash\>" /etc/passwd |cut -d":" -f 1`

if [ $? -eq 0 ];then

echo "以下用户拥有bash:"

echo "${bashuser}"

else

echo "没有用户拥有bash"

fi

练习:写一个脚本

给定一个文件,比如/etc/inittab

判断这个文件中是否有空白行

如果有,则显示其空白行数:否则,显示没有空白行

[[email protected]_2 ~]# cat hang.sh

#!/bin/bash

hang=`grep ‘^$‘ /etc/inittab |wc -l`

if [ ! $? -eq 0 ];then

exit 8

fi

if [ $hang -gt 0 ];then

echo "有${hang}行空白行"

else

echo "没有空白行"

fi

练习:写一个脚本

给定一个用户,判断其UID与GID是否一样

如果一样,就显示此用户为"good guy":否则,就显示此用户为"bad guy"

[[email protected]_2 ~]# cat ug.sh

#!/bin/bash

useruid=`id -u "[email protected]" 2>/dev/null`

if [ ! $? -eq 0 ];then

echo "请传入正确的用户"

exit 9

fi

usergid=`id -g "[email protected]" 2>/dev/null`

if [ ! $? -eq 0 ];then

echo "请传入正确的用户"

exit 9

fi

if [ $# -eq 1 ];then

if [ $useruid -eq $usergid ];then

echo "good guy"

echo "${1}的UID和GID"

else

echo "bad guy"

fi

else

echo "请传入正确的参数"

fi

练习:写一个脚本

判定命令历史中历史命令的总条数是否大于1000,:如果大于,则显示"Some command will gone":否则显示"ok"。

[[email protected]_2 ~]# cat his.sh

#!/bin/bash

#

his=`history |wc -l 2>/dev/null`

if [ $his -gt 1000 ];then

echo "Some command will gone"

else

echo "ok"

fi

case....esac判断

语法

case 变量名称 in

值一)

输出信息

;;

值二)

输出信息

;;

*)

输出信息

;;

esac

#一般常用于传参

时间: 2024-11-08 23:19:14

shell条件判断的相关文章

Shell 条件判断

传统if 从句子——以条件表达式作为 if条件 if [ 条件表达式 ] then command command command else command command fi       条件表达式 文件表达式 if [ -f  file ]    如果文件存在 if [ -d ...   ]    如果目录存在 if [ -s file  ]    如果文件存在且非空 if [ -r file  ]    如果文件存在且可读 if [ -w file  ]    如果文件存在且可写 if

[Shell]条件判断与流程控制:if, case, for, while, until

-------------------------------------------------------------------------------------------------------- [条件判断] 1. 按文件类型进行判断 -b 文件    判断该文件是否存在,并且为块设备文件(是块设备文件为真) -c 文件    判断该文件是否存在,并且为字符设备文件(是字符设备文件为真) -d 文件    判断该文件是否存在,并且为目录文件(是目录为真) -e 文件    判断该文

shell中的变量及shell条件判断

Shell 基础之变量和条件判断 一.shell概述 1.shell概述: shell是一个命令行的解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统及程序,用户可以用shell来启动.挂起.停止甚至编写一些程序,shell还是一个功能强大的编程语言,shell是解释性的脚本语言,在shell中可以直接调用Linux命令. 2.shell脚本的用途 (1)自动化常用的命令 (2)执行系统管理和故障排除 (3)执行简单的应用程序 (4)处理文本或文件 3.shell的分类 (1

L7.1 linux shell 条件判断与循环语句

bash脚本条件判断语句详细使用 条件判断的使用方法及其相关示例: 本文对bash中test语句,if判断语句(单分支,多分支)case语句详细说明,如下 条件测试:test 作用:Shell中的test命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. test使用语法 test EXPRESSION 也可以使用 :[ EXPRESSION ]:[[ EXPRESSION ]] 整数测试: 隐含着做数值大小比较,所以不要给变量引用加引用: $A -gt $B:是否大于:是

shell条件判断总结

无论什么编程语言都离不开条件判断.SHELL也不例外.shell有一下几种条件判断类别. 0x01.按照文件类型进行判断 选项 作用 -b 文件 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真) -d 文件 判断该文件是否存在,并且是否为目录文件(是目录为真) -e 文件 判断该文件是否存在(存在为真) -f 文件 判断该文件是否存在,并且是否为普通文件(是普通文件为真) - L 文件 判断该文件是否存在,

shell条件判断中单个中括号和霜中括号有什么需要

1.单中括号 [] ①bash 的内部命令,[和test是等同的.如果我们不用绝对路径指明,通常我们用的都是bash自带的命令.if/test结构中的左中括号是调用test的命令标识,右中括号是关闭条件判断的.这个命令把它的参数作为比较表达式或者作为文件测试,并且根据比较的结果来返回一个退出状态码.if/test结构中并不是必须右中括号,但是新版的Bash中要求必须这样. ②Test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt

LINUX SHELL条件判断

算术运算的条件判断 [] [[]]: -eq -ne -lt -le -gt -ge (( )):><>=<== [[email protected] ~]# if (( 2 == 3));then echo '123'; fi [[email protected] ~]# if (( 2 >= 3));then echo '123'; fi [[email protected] ~]# if (( 2 <= 3));then echo '123'; fi 123[[e

shell条件判断 if else

基本语法 shell的if语法和C语言等高级语言非常相似,唯一需要注意的地方就是shell的if语句对空格方面的要求比较严格(其实shell对所有语法的空格使用都比较严格),如果在需要空格的地方没有打上空格,都会报错. 如if [ $1x == "ip"x ];then echo "abc";fi中少一个空格都会报错. ; then 等同于 换行后 then 另外shell的if语句必须以fi作为结尾,不然同样会报错.有else和elif时也一样,需要注意空格的问题

linux中shell条件判断if中的-a到-z

[ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ -d FILE ] 如果 FILE 存在且是一个目录则为真. [ -e FILE ] 如果 FILE 存在则为真. [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真. [ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真. [ -h FILE ] 如果 FILE