1.Shell中的特殊字符
# |
注释 |
; |
命令分割符,可以将多个语句放在一行执行 |
‘’(单引号) |
强引用,在单引号中无法引用变量 |
" "(双引号) |
类似于’’,但支持变量替换 |
` `(反引号.为tab键上方按键) |
用于引用命令的执行结果 |
2.变量
命名规则:以字母开头,可以使用数字字母
变量定义:declare varName
变量赋值:varName=值
变量值引用: $varName
导出变量: export varName[=value]
撤销变量: unset varName
特殊变量:
$?:返回上一条命令的状态返回值
$1,$2...:位置变量
$#:脚本传入的所有参数个数
$*,$@:返回脚本传入的所有参数
3.条件测试
使用格式:
test EXPR
[ EXPR ]
[[ EXPR ]]
文件测试 |
字符测试 |
整数测试 |
|
-a|-e FILE:是否存在 |
-S FILE:套接字文件 |
> :大于 |
-gt:大于 |
-f FILE:普通文件 |
-p FILE:命名管道文件 |
<:小于 |
-ge:大于等于 |
-d FILE:目录 |
-s FILE:是否为空文件 |
<=:小于等于 |
-eq:等于 |
-L FILE:符号链接文件 |
-r FILE:是否可读 |
>=:大于等于 |
-le:小于等于 |
-b FILE:块设备文件 |
-w FILE:是否各写 |
==:等于 |
-lt:小于 |
-c FILE:字符设备文件 |
-x FILE:是否可执行 |
!=:不等于 |
-ne:不等于 |
FILE1 -nt FILE2 :FILE1的mtime是否新与FILE2 |
-n String :是否不空 |
||
FILE1 -ot FILE2 :FILE1的mtime是否旧与FILE2 |
-z String:是否为空 |
4.输入输出和重定向
标准输入:0 默认设备为键盘
标准输出:1 默认设备为显示器
标准错误输出:2 默认设备为显示器
>::覆盖输出 &>错误覆盖输出
>> :追加输出 &>>错误覆盖输出
&>:合并重定向
<:输入重定向
<<:此处文档
tee:分流,将结果输出到屏幕并重定向
5.Shell脚本格式
第一行顶格"#!/path/to/a/shell"
6.常用语法结构
条件判断 |
|||
语法格式 |
示例 |
||
单分支if语句 if 语句1;then 语句1执行结果为真则执行 else 语句1执行结果为假则执行 fi
|
|
||
多分支if语句 if 语句1;then 语句1执行结果为真则执行 elif 语句2;then 语句2执行结果为真则执行 ... else 所有条件都不满足时执行 fi
|
|
||
循环结构 |
|||
for varName in LIST;do 循环体 done |
|
||
for ((var=#;测试条件;修正条件));do 循环体 done |
|
||
while 条件语句;do #条件为真时进入循环 循环体 done |
|
||
until 条件语句;do 循环体 done |
|
||
条件选择 |
|||
case $varName in exp1) 语句体1 ;; exp2) 语句体 2 ;; ... *) 语句体 n ;; |
|
7.函数使用和循环条件控制
函数声明方式
1
2
3
4
5
6
7
|
function 函数名{
函数体 } 函数名() {
函数体 } |
函数使用方式
函数名 [参数....]
参数可以在函数体中用位置变量引用
循环条件控制
continue:提前进入下一轮循环
break #: #默认为1,跳出#层循环
Linux Shell参数替换 http://www.linuxidc.com/Linux/2013-06/85356.htm
Shell for参数 http://www.linuxidc.com/Linux/2013-07/87335.htm
Linux/Unix Shell 参数传递到SQL脚本 http://www.linuxidc.com/Linux/2013-03/80568.htm
Shell脚本中参数传递方法介绍 http://www.linuxidc.com/Linux/2012-08/69155.htm
Shell脚本传递命令行参数 http://www.linuxidc.com/Linux/2012-01/52192.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-08/105379.htm
