Linux Bash Shell入门教程(4)
BASH 中的变量除了用于对 整数 和 字符串 进行操作以外,另一个作用是作为文件变量。BASH 是 Linux 操作系统的 Shell,因此系统的文件必然是 BASH 需要操作的重要对象,如 if [ -x /root ] 可以用于判断 /root 目录是否可以被当前用户进入。下表列出了 BASH 中用于判断文件属性的操作符:
运算符
|
含义( 满足下面要求时返回 TRUE ) |
-e file
|
文件 file 已经存在 |
-f file
|
文件 file 是普通文件 |
-s file
|
文件 file 大小不为零 |
-d file
|
文件 file 是一个目录 |
-r file
|
文件 file 对当前用户可以读取 |
-w file
|
文件 file 对当前用户可以写入 |
-x file
|
文件 file 对当前用户可以执行 |
-g file
|
文件 file 的 GID 标志被设置 |
-u file
|
文件 file 的 UID 标志被设置 |
-O file
|
文件 file 是属于当前用户的 |
-G file
|
文件 file 的组 ID 和当前用户相同 |
file1 -nt file2
|
文件 file1 比 file2 更新 |
file1 -ot file2
|
文件 file1 比 file2 更老 |
注意:上表中的 file 及 file1、file2 都是指某个文件或目录的路径。
2.3.1.1. 关于局部变量
在 BASH 程序中如果一个变量被使用了,那么直到该程序的结尾,该变量都一直有效。为了使得某个变量存在于一个局部程序块中,就引入了局部变量的概念。BASH 中,在变量首次被赋初值时加上 local 关键字就可以声明一个局部变量,如下面这个例子:
#!/bin/bash
HELLO=Hello
function hello {
local HELLO=World
echo $HELLO
}
echo $HELLO
hello
echo $HELLO
该程序的执行结果是:
Hello
World
Hello
这个执行结果表明全局变量 $HELLO 的值在执行函数 hello 时并没有被改变。也就是说局部变量 $HELLO 的影响只存在于函数那个程序块中。
2.3.2. BASH 中的变量与 C 语言中变量的区别
这里我们为原来不熟悉 BASH 编程,但是非常熟悉 C 语言的程序员总结一下在 BASH 环境中使用变量需要注意的问题。