`

【Linux基础篇】退出、测试、判断及运算符

 
阅读更多

退出状态

Linux系统中,每个命令执行完成后,系统都会返回1个退出状态来表示命令执行是否正确

最后1次执行的退出状态值保留在内置变量 $? 中,通过echo $? 可判断命令是否执行成功

 

POSIX规定的几种退出状态值:

0            运行成功,未出现任何问题

1~125    运行失败,脚本命令,系统命令错误,或者参数传递错误等

126        找到命令但无法执行

127        未找到命令或无效命令

>128      命令被系统强制结束

 

测试命令

判断某个条件或某组条件是否成立,如果为真,则返回0,为假,则返回非0值

测试命令有两种方式:

test expression

[ expression ]

"[" 启动测试,在"[" 与 "]"之间,前后空格不能省略

第2种方式,常与if、case、while语句联合使用

 

整数比较运算符

-eq  等于

-ge  大于等于

-gt   大于

-le   小于等于

-lt    小于

-ne  不等于

 

num=100

[ "$num" -ge 100 ]

echo $?

 

字符串比较运算符

string                       测试字符串是否不为空

-n string                   测试字符串是否不为空

-z string                    测试字符串是否为空

string1 = string2       测试字符串是否相等

string1 != string2      测试字符串是否不等

 

str1="Hello"

[  "$str1" = "hello" ]

echo $?

1  #退出状态为1,表示不相等

 

 

 文件操作符

test file_operator File  或

[ file_operator  File ]

File可以是文件名、目录、文件路径等

 

-d   file   测试file是否为目录

-f    file   测试file是否为普通文件

-e   file   测试file是否存在

-s   file    测试file长度是否不为0

-r    file   测试file是否为可读权限

-w  file    测试file是否为可写权限

-x   file    测试file是否为可执行权限

-L   file    测试file是否符号化链接

 

 [ -d file_exam ]  判断文件是否为目录

 [ -f file_exam ]   判断文件是否为文件

 [ -e file_exam ]  判断是否存在,创建或删除1个文件后,判断是否创建或删除成功

 

 

逻辑运算符

用来与测试命令联合使用

与、或、非

! expression   非(not)

expression1 -a expression2  且(and)

expression1 -o expression2  或(or)

 

[ -e fiel1 -a -x file1 ]   #测试fiel1是否存在且可执行  

[ "$integer1" -lt 5 -o "$integer1" gt 10 ] #测试integer1小于5或者大于10

 

 

 

 

条件判断

根据不同的条件执行不同的语句

 

if 

if expression

then

command1

command2

fi

注意:测试条件expression后面没有分号,则then语句必须换行

 

if和then可以处于同一行,必须使用 ";" 来终止if语句

if expression;then

command1

command2

fi

 

#!/bin/bash

echo "input your name"

read name  #读取键盘输入,并赋值给变量name

if [  -z "$name"  ];then

echo "name cannot be null"

fi

 

 

if...else

 

if expression;then

command1

command2

else

command3

fi

 

if...elif...else

 

if expression1;then

command1

command2

elif expressionN

command3

elif expressionX

command4

else

command5

fi

 

 

case选择

case variable in

value1)

comamnd1;;

value2)

command2;;

valueN)

commandN;;

*)

commandDefault;;

 esac

 

case结构的变量值variable逐个与value1,value2,...,valueN进行比较,直到找到匹配项

如果找到,则执行该项下面的语句,遇到";;"时,直接跳出case到esac

否则,执行"*)"下面的语句,直到";;"时结束

 

#!/bin/bash

echo "input you favor number"

read number1

case "$number1" in

1)

echo "You are good!";;

2)

echo "You are bad!!";;

*)

echo "You are nothing!!!";;

esac

 

 

运算符

算术运算符

+    加  (+=)

-    减   (-=)

*    乘   (*=)

/    除    (/=)

%  取余   (%=)   10%3 = 1

**  幂运算 (**=)   5**3 = 125

 

位运算符

<<  (<<=)  左移  即*2  左移n位,即乘以2的n次幂

>>  (>>=)  右移  即/2   右移n位,即除以2的n次幂

&    (&=)    按位与

|      (|=)     按位或

~     (~=)    按位异或

^      (^=)    按位取反

 

自增自减运算

++variable   先自增再参与运算

variable++   先参与运算再自增

--variable     先自减再参与运算

variable--     先参与运算再自减

 

数字常量

Linux Shell默认将数字按10进制处理

如果要使用其它进制,需要对其进行特殊标记

当使用数字0作为前缀,表示8进制

当使用0x进行标记,表示16进制

 

另外,还可以使用#num进行标记

8#    则表示8进制,如8#75

16#  则表示16进制,如16#F9

注意:num#后面跟的数字不能超过其对于进制中最大数值范围

如,2#20则错误,因为2进制范围是0~1,2已经超出有效范围。

 

 

 

 

分享到:
评论

相关推荐

    linux C编程实战

    第一篇 Linux和C编程基础  第1章 Linux系统概述  1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linux C编程实战 电子书part5

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linux C编程实战 电子书part2

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linux C编程实战 电子书part3

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linux C编程实战 电子书part4

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linux C编程实战 电子书part1

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linuxC编程实战.part2.rar(文件已加密)

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linuxC编程实战.part5.rar

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linuxC编程实战.part3.rar

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    linuxC编程实战.part4.rar

    第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍   1.1.1 Linux的发展历程   1.1.2 Linux的特性   1.1.3 Linux的内核版本和发行版本   1.2 C语言简介   1.2.1 C语言的...

    MySQL命令大全

    在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如...

    MYSQL常用命令大全

    在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如...

Global site tag (gtag.js) - Google Analytics