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  :表示命令本身

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

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

[email protected]  :引用传递给脚本的所有参数

变量名的命名法则:

不能使用程序中的保留字如: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 是否存在且为空

时间: 2024-09-29 14:40:07

bash的基本特性的相关文章

运维基础--Linux中bash的基础特性

bash 的基础特性如下: 一.命令的别名--alias 命令 用来定义和显示命令的别名,unalias撤销定义的别名:但是要注意以下几点: 1.alias的效果仅限于当前shell的生命期: 2.如果修改.bashrc配置文件,其中保存的别名不会立即生效,只有在重新加载该文件的内容后,才会生效且永久生效: 3.为了能够保证设置的别名有效,通常两种操作都要做: 二.命令历史 shell进程会其会话中保存此前用户提交执行过的命令,history是shell的内置命令   1.命令语法格式: his

Linux目录结构、bash的基础特性、I/O重定向及管道

Linux目录结构 LSB(Linux StandardsBase)是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合规定了一系列标准,其中包括文件系统层级结构标准(FHS Filesystem Hierarchy Standard) Linux系统根目录下有众多子目录,这些目录都参照了FHS协定 / ├── bin ├── boot ├── dev ├── etc ├── home ├── lib ├── lib64 ├── lost+found ├── media ├

LINUX的bash的一些特性

1.bash的特性 在LINUX进行SHELL编程是很常见的一项任务,熟悉BASH的特性,是十分必要的. 昨天花了一天时间,对BASH的特性进行了学习总结,发现过去的自己,对LINUX的BASH特性认识的很少,收获很多. 2.BASH支持命令行编辑 一直以来,和LINUX的COMMAND LINE打交道,只知道clear清屏,用退格键进行删除.其实,BASH支持命令行进行高效,快速的编辑.一些常用的,总结如下: 序号 命令快捷键 说明 1 ctrl+a 表示跳到命令行首 2 ctrl+e 表示跳

bash部分重要特性

bash shell的特性之命令别名 alias:当前shell中定义的所有别名: (任何随进程而生的属性,会在进程结束,属性消失) 格式    alias 命令别名 ='原始命令+[选项}' unalias 别名 取消定义的别名 (在命令前加\使用命令本身,而不是别名) bashshell的特性:globbing,文件名通配 通配符: *:匹配任意长度的任意字符 ?:匹配任意单个字符 []:匹配指定字符范围内的任意单个字符,不区分大小写 [[:upper:]]:大写字母 [[:lower:]]

Lunix基础入门--bash的基础特性(五)

Bash的基础特性之一(history命令): 命令历史:shell进程会其会话中保存此前用户提交执行过的命令: [[email protected] ~]# history 定制history的功能,可通过环境变量实现: HISTSIZE:shell进程可保留的命令历史条数 [[email protected] ~]# echo $HISTSIZE 1000 HISTFILE:历史命令保存的文件 [[email protected] ~]# echo $HISTFILE /root/.bash

bash shell基础特性之三(数组)

bash shell基础特性之三(数组) 一.数组定义 数组指连续的多个独立内存空间,每个内存空间相当于一个变量. bash shell只支持一维数组,但参数个数没有限制. 数组元素:数组名+索引(从0开始编号) 声明数组:declare -a ARRAR_NAME(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组) 关联数组:declare -A ARRAY_NAME 数组元素的赋值:一次赋值全部元素.指定索引进行赋值.一次只赋值一个元素 (1) array=(var1 va

bash的基本特性之文件名通配 及IO重定向,管道详解

本篇博文依然涉及到bash的基本特性 文件名通配,并讲解IO重定向以及管道的使用 管道配合tr命令的应用 bash的基础特性之一:文件名通配 globbing:文件名通配(整体文件名匹配,而非部分) 匹配模式:元字符 *:匹配任意长度的任意字符 pa*,*pa*,*pa,*p*a* ?:匹配任意单个字符 pa?,??pa,p?a,p?a? []:匹配指定范围内的任意单个字符 有几种特殊字符: [a-z],[A-Z],[0-9],[a-z0-9] [[:upper:]]:所有大写字母 [[:low

bash的基础特性(1)

bash的基础特性(1) history: 1.命令解释: history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件. 该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令.例如,要执行第2个历史命令,则输入!2. 历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取.在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制. 命令语法: his

Linux基础知识--Linux的文件系统和bash的基础特性

Linux基础知识--linux的文件系统和bash的基础特性 一.Linux文件系统: Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中 linux文件系统遵循FHS(Filesystem Hierarchy Standard,文件系统目录标准),多数Linux版本采用这种文件组织形式.FHS采用了树行组织文件. FHS定义了两层规范,第一层是,/目录下面的各个目录应该要

bash的重要特性:变量

在介绍内容之前,我解释下排版问题, 第一分割线是基本介绍 第二分割线是细节和扩展内容 第三分割线是对细节内容的详细讲解以及实例 前面粗略介绍的后面会有详解 bash的重要特性:变量 bash变量的类别: 本地变量:只对当前shell进程有效的变量:对其他shell进程无效,包当前shell进程的子进程: 环境变量:对当前shell进程及其子shell有效,对其他的shell进程无效 局部变量:对shell脚本中某代码片段有效,通常用于函数本地 位置变量:使用bash 脚本时,命令后面跟着的参数位