首页 > 代码库 > bash的基本特性

bash的基本特性

Bash基本特性:

首先得从逻辑运算来说起:

与运算  &&

两个判断条件都必须为真时,状态才为真,否则都为假,在此1是真,0是假


1 && 1 = 1

1 && 0 = 0

0 && 1 = 0

0 && 0 = 0


或运算 ||

两个判断条件中都必须为假时,那么这个或运算就为假


0 || 0 = 0

0 || 1 = 1

1 || 0 = 1

1 || 1 = 1


非运算 !

!1=0 //这里的意思就是,不是真,那就是假

!0=1



echo $? //用来查看上一个命令执行是否成功。

“进程生命周期”的知识:

当一个进程执行完毕时,该进程会调用一个名为 _exit 的例程来通知内核它已经做好“消亡”的准备了。该进程会提供一个退出码(一个整数)表明它准备退出的原因。按照惯例,0用来表示正常的或者说“成功”的终止。


也就是说我们在执行 echo $? 时反回的值就是进程的退出码。而且,这个退出码是由刚刚执行完的进程提供给系统内核的。//了解一下就好,知道怎么用好了


来下列示题来演示一下:

ls /var && echo "successful" //这里的意思就是如果ls命令能够执行成功,那么也就会输出successful,状态值就是真的

ls /var && echoo "successful" //这里ls命令能够执行成功,但是echo命令确写错了,所以这两个命令在一起,最后得到的状态也是假的

lss /var && echo "successful" //两个命令都是错的,所以最后得到的状态也是假的。


ls /var || echo "successful" //两个命令都能正确执行,所以最后得到的状态是真的

ls /var || echoo “successful” //ls命令是错的,所以最后得到得状态是真的

lss /var || echoo "successful" //这两个命令都不能成功执行,所以按照或运算的规则,那么得到的状态值就是假的


bash变量种类:

可分为三种变量:

本地变量:生效范围为当前shell进程,对当前shell之外的其他shell进程包括当前shell的子shel进程均无效

环境变量:生效范围为当前shell进程和子进程

局部变量:生效范围为当前shell进程中某代码片段(通常指函数)

位置变量:$1,$2,$3....,用于入脚本在代码中调用通过命令行传递缎带它的参数


特殊变量:

$? :上个命令执行成功与否的结果0为成功,其它都为假

$0  :表示命令本身

$#  :传递给脚本参数的个数

$*  :传递给脚本的所有参数

$@  :引用传递给脚本的所有参数


变量名的命名法则:

不能使用程序中的保留字如:if,for...

只能使用数字、字母、下划线、且不能使用数字开头





变量赋值:

1、可以直接赋值字符串:name="string"

2、变量引用:name="$string"

3、命令引用:name=`COMMAND` 或 name=$(COMMAND)  也就是相当于你调用这个变量的时候,它自动的在shell中执行一遍,在返回给你的值。


变量引用:$name 或 ${name}

弱引用 “” 其中的变量引用会被为变量值

强引用 ‘’ 其中的变量不会被替换为变量值,而保持原字符串不变


显示已定义的变量:set 

取消变量:unset name



环境变量:

赋值、声明:

export name=VALUE  

delcare -x name=VALUE

变量引用$name ${name}

显示所有环境变量:

export

env

printenv


bash的配置文件:

全局的是:/etc/profile.d/*.sh  结尾的文件,也可以自己写文件在执行一下

 /etc/profile


个人配置文件:~/.bash_profile

~/.bashrc


在文件中写好后,可以执行

source file   //file就是你写的配置文件,就可以在当前shell中生效了


bash中的算术运算:

操作符有:+、—、*、/、%、**

算术运算的实现方式:

1、let Var_Name=EXPRESSION

2、$[EXPRESSION]

3、$((EXPRESSION))


增强型复制:

+=、-=、*=、/=、%=、

例如:

let count+=1 即 let count=count+1

自增、自减

let var+=1 即 let var++

let var-=1 即 let var--


接下来就是比较重要的条件测试 了:

条件测试:

判断某需求是否满足,需要有测试机制来实现,

Note:专用的测试表达式需要有测试命令辅助完成测试过程:

测试命令有:

1、test EXPRESSION

2、[ EXPRESSION ]

3、[[ EXPRESSION ]]

注意:EXPRESSION前后必须有空白字符!


bash的测试类型:

数值测试:

-gt 是否大于

-ge 是否大于等于

-eq 是否等于

-ne 是否不等于

-lt 是否小于

-le 是否小于等于


字符串测试:

== 是否等于 

> 是否大于 

< 是否小于

!= 是否不等于

=~ 左侧字符串是否能够被右侧的PATERN所匹配

-z "string" 测试字符串是否为空,空测为真,不空则为假

-n "string" 测试字符串是否为不空,不空则为真,空则为假


文件测试

1、存在必测试:

-a FILE (少用)

-e FILE 文件存在测试,存在为真,否则为假


2、存在性及类别测试:

-b FILE 是否存在且为块设备

-c FILE 是否存在且为字符设备

-f FILE 是否存在且为普通文件

-d FILE 是否存在且为目录文件

-h FILE 或 -L FILE 是否存在且为符号链接

-s FILE 是否存在且为套接字文件

-p FILE 是否存在且为管道文件


3、文件权限测试:

-r FILE 是否存在且可读

-w FILE 是否存在且可写

-x FILE 是否存在且可执行


4、文件特殊权限测试:

-g FILE 是否存在且拥有sgid权限

-u FILE 是否存在且拥有suid权限

-k FILE 是否存在且拥有sticky权限


5、文件大小测试:

-s FILE 是否存在且为空


本文出自 “10958002” 博客,请务必保留此出处http://10968002.blog.51cto.com/10958002/1917012

bash的基本特性