1.6. Linux上bash的基础特性(三)¶
1.6.1. 编程环境¶
shell脚本的组成部分
shebang
各种命令组合
编程变量种类
本地变量: 仅仅在当前的shell生效
环境变量: 在当前和子shell生效
局部变量: shell进程某代码片段
位置变量: $1,$2来表示,用与获取脚本接受的参数
特殊变量: 一些特殊变量
特殊变量如下
$?:上一个命令的执行返回码
$#:参数个数
$*:参数
$0:命令本身
$@:所有参数
本地变量: name=’value’
环境变量:export name=value,declare -x name=value
查看环境变量: env,export,printenv变量
bash的配置文件
- 全局配置文件
/etc/profile
/etc/profile.d/*.sh
- 个人的配置文件
~/.bash_profile
~/.bashrc
profile:用于定义环境变量和脚本
bashrc:用于定义命令别名和本地变量
1.6.1.1. 算数运算¶
let a=expr
$[expr]
$((expr))
expr a1 op a2
[root@centos6 x]# let a=10
[root@centos6 x]# $[10+20]
-bash: 30: command not found
[root@centos6 x]# echo $[10+20]
30
[root@centos6 x]# echo $((10+20))
30
[root@centos6 x]# echo `expr 10 + 20`
30
1.6.1.2. 条件测试¶
test expr
[ expr ]
[[ expr ]]
1.6.1.3. 测试类型¶
-gt
-lt
-eq
-ge
-le
-ne
1.6.1.4. 字符测试¶
==
>
<
!=
=~
-z
-n
1.6.1.5. 文件测试¶
-a
-e
-b
-c
-d
-f
-S:存在且为socket
-p
-h -L
-r
-w
-x
-g
-u
-k
-s:存在且非空
-t fd:表示文件表叔父是否已经打开且与某个终端先关
-N :文件自上次被读取之后是否被修改过
-O:是否是文件属主
-G:是否是文件组
file2 -ef file2: 相同inode文件
file1 -nt file2:file1比file2新
file1 -ot file2:file1比file2旧
1.6.1.6. 组合测试¶
&&
||
-a
-o
!
1.6.1.7. 语句控制¶
if
if expr ; then
sate
fi
for
for var in [] ; do
sate
done