shell脚本基础(一)
2016-06-14 本文已影响54人
青花瓷的平方
这片文章是基于Shell脚本编程30分钟入门的入门基础,简要介绍shell的一些常用需要注意的语法基础。请务必熟悉上面所指出的文章。
1. test或[命令
在实际工作中,大多数脚本程序都会广泛使用Shell的布尔判断命令[或test。在一些系统上,这两个命令其实是一样的,只是为了增强可读性,当使用[命令时,我们还使用符号]来结尾。其中[ ] 中 左右两端需要空格。
2. 常用比较符号
字符串比较 | 结果 |
---|---|
string1 = string2 | 如果两个字符串相同,结果就为真 |
string1 != string2 | 如果两个字符串不同,结果就为真 |
-n string | 如果字符串不为空,则结果为真 |
-z string | 如果字符串为一个空串(null),则结果为真 |
算术比较 | 结果 |
---|---|
expression1 -eq expression2 | 如果两个表达式相等,则结果为真 |
expression1 -ne expression2 | 如果两个表达式不等,则结果为真 |
expression1 -gt expression2 | 如果expression1大于expression2,则为真 |
expression1 -ge expression2 | 如果expression1大于等于expression2,则为真 |
expression1 -lt expression2 | 如果expression1小于expression2,则为真 |
expression1 -le expression2 | 如果expression1小于等于expression2,则为真 |
!expression | 表达式为假,则结果就为真;反之亦然 |
文件条件测试 | 结果 |
---|---|
-d file | 如果文件是一个目录,则为真 |
-f file | 如果文件是一个普通文件,则为真;也可以用来测试文件是否存在 |
-r file | 如果文件可读,则结果为真 |
-s file | 如果文件大小不为0,则结果为真 |
-w file | 如果文件可写,则结果为真 |
-n file | 只读取file脚本,但不实际执行 |
-x file | 如果脚本文件可执行,则结果为真 |
3.系统变量
变量名 | 含义 |
---|---|
$0 | 这个程序的执行名字 |
$n | 这个程序的第n个参数值,n=1...9 |
$* | 这个程序的所有参数 |
$# | 这个程序的参数个数 |
$$ | 这个程序的PID |
$! | 执行上一个背景指令的PID |
$? | 上一个指令的返回值 |
4.运行shell
运行shell通常有两种方法
- 1.作为可执行程序
chmod +x test.sh
./test.sh
注意,一定要写成./test.sh,而不是test.sh,运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。
通过这种方式运行bash脚本,第一行一定要写对,好让系统查找到正确的解释器。
- 2.作为解释器参数
这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:
/bin/sh test.sh