大纲
一、编程语言分类
二、shell分类
三、变量相关概念
四、bash变量类型
五、逻辑运算
六、算术运算
七、bash条件测试类型及测试方法
八、命令的执行结果与执行状态返回值区别
一、编程语言分类
- 距离人的远近分类:机器语言、汇编语言、高级语言
- 执行时是否需要预先转换:编译型语言、解释性语言
- 编程风格分类:面向对象、面向过程
- 变量使用时是否需要预先声明:强类型语言、弱类型语言
二、shell分类及bash概念
- GUI:Gnome、KDE、Xfce
- CLI:sh、bash、csh、ksh、tcsh、zsh
三、变量相关概念
- 变量定义:命名的一段内存空间
- 赋值过程定义:保存数据到这段内存空间的过程就叫做赋值
- 声明变量类型的作用:定义变量的存储格式、存储空间大小及支持的运算
- 变量类型:数值型、字符型、布尔型、日期时间型
四、bash变量类型
1.本地变量:只对当前shell进程有效,对其子shell以及其它shell都无效
[[email protected] test]# A=‘jerry‘ # 定义一个本地变量A
2.局部变量:仅对局部代码生效(且只能在函数中定义)
[[email protected] test]# local B=‘tom‘ # 命令行不能定义局部变量 -bash: local: can only be used in a function
3.环境变量:对当shell进程及其子shell有效
[[email protected] test]# export C=‘natash‘# 定义环境变量C [[email protected] test]# echo $C natash [[email protected] test]# bash # 重新打开一个子shell [[email protected] test]# echo $C # 之前定义的环境变量在子shell中依然有效,但是重新登陆就没效了 natash
4.位置变量$[1-10]
$1 # 表示向脚本传递的第一个参数 $2 # 表示向脚本传递的第二个参数
5.特殊变量
$0:脚本名称自身 $#:传递到脚本的参数个数 $?:上一条命令的执行状态返回值,0代表成功 $$:脚本运行的当前shell进程的id号 $!:后台运行的最后一个进程的进程ID号 $*:以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 [email protected]: 与$*相同,但是使用时加引号,并在引号中返回每个参数
五、逻辑运算
1.逻辑与:&&
[[email protected] scripts]# id user2 &> /dev/null && userdel -r user2 && echo "Delete user2 finished." Delete user2 finished. # 前面为真,后面就执行;前面为假,后面就不用执行;如果...就...
2.逻辑或:||
[[email protected] scripts]# id user2 &> /dev/null || echo "user2 not exists." user2 not exists. # 前面为真,后面就不用执行;前面为假,后面就要执行;如果...否则...
3.逻辑非:!
[[email protected] scripts]# ! id user2 &> /dev/null && echo "user2 not exists." user2 not exists. # 前面为真,取反之后就为假;前面为假,取反之后就为真;如果不...就...
六、算术运算
1.let算术运算表达式
[[email protected] scripts]# A=3 [[email protected] scripts]# B=5 [[email protected] scripts]# let C=$A+$B;echo $C 8
2.$[算术运算表达式]
[[email protected] scripts]# A=3 [[email protected] scripts]# B=5 [[email protected] scripts]# D=$[$A+$B];echo $D 8
3.$((算术运算表达式))
[[email protected] scripts]# A=3 [[email protected] scripts]# B=5 [[email protected] scripts]# E=$(($A+$B));echo $E 8
4.`expr 算术运算表达式`,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
[[email protected] scripts]# A=3 [[email protected] scripts]# B=5 [[email protected] scripts]# F=`expr $A + $B`;echo $F 8
七、bash条件测试类型及测试方法
1.整数测试
-gt:测试是否大于,大于为真,反之为假 -lt:测试是否小于,小于为真,反之为假 -ge:测试是否大于等于,大于等于为真,反之为假 -le:测试是否是否小于等于,小于等于为真,反之为假 -eq:测试是否等于,等于为真,反之为假 -ne:测试是否不等,不等为真,反之为假
2.文件测试
-e FILE:测试文件是否存在;存在为真,否则为假 -f FILE: 测试文件是否为普通文件;是文件为真,否则为假 -d FILE: 测试指定路径是否为目录;是目录为真,否则为假 -r FILE: 测试当前用户对指定文件是否有读取权限;可读为真,否则为假 -w:测试当前用户对指定文件是否有写权限;可写为真,否则为假 -x:测试当前用户对指定文件是否有执行权限;可执行为真,否则为假
3.字符测试
==:测试是否相等,相等为真,不等为假 !=: 测试是否不等,不等为真,等为假 -n string: 测试指定字符串是否不空,不空为真,空则为假 -z string: 测试指定字符串是否为空,空为真,不空则为假
4.测试方法
(1).[ expression ]
[[email protected] scripts]# [ 3 -gt 2 ] && echo "3>2" 3>2
(2).[[ expression ]]
[[email protected] scripts]# [[ 3 -gt 2 ]] && echo "3>2" 3>2
(3).test expression
[[email protected] scripts]# test 3 -gt 2 && echo "3>2" 3>2
5.组合测试条件
(1).逻辑与
[[email protected] scripts]# [ 3 -gt 2 -a 3 -lt 5 ] && echo "2<3<5" 2<3<5
(2).逻辑或
[[email protected] scripts]# [ 3 -gt 2 -o 3 -gt 5 ] && echo "2<3<5" 2<3<5
(3).逻辑非
[[email protected] scripts]# [ ! 3 -gt 5 ] && echo "3<5" 3<5
八、命令的执行结果与执行状态返回值
[[email protected] scripts]# ls /home/ user4 user8 # 这是命令的执行结果 [[email protected] scripts]# echo $? 0 # 这是命令的执行状态返回值,0为成功,1-255都为不成功
时间: 2024-10-12 19:53:20