1、简单介绍:
Shell Script ,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。
2、什么情况下写shell script:
简单命令无法完成;
需要自动执行;
大量重复一致性操作。
3、shell中的特殊符号:
$ 美元符号。用来表示变量的值。
# 井号。除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母
"" 双引号。shell不会将一对双引号之间的文本中的大多数特殊字符进行解释,如#不再是注释的开头,它只表示一个井号“#”。但$仍然保持特殊含义。(在双引号中的$加变量名,即:$PARAM_NAME,依然会转换成变量的值.)
双引号对于某些特殊符号是不起作用的, 例如:”,$,\,`(反引号)
双引号和单引号不能嵌套。即:echo ‘””’ 输出””, echo “’’” 输出’’
'' 单引号。shell不会将一对单引号之间的任何字符做特殊解释。(在双引号中的$加变量名,即:$PARAM_NAME,不会转换成变量的值。)
`` 倒引号。命令替换。在倒引号内部的shell命令首先被执行,其结果输出代替用倒引号括起来的文本,不过特殊字符会被shell解释。echo ‘$HOME’(结果:$HOME)
\ 斜杠。用来去掉在shell解释中字符的特殊含义。在文本中,跟在\后面的一个字符不会被shell特殊解释,但其余的不受影响。
[]中括号, 主要是用来测试条件的,通常放在if语句的后面。
echo [$HOME ] (结果:[/home/zhangbingbing ]) (注意:HOME后面有空格)
echo [$HOME –eq ‘/zhang’] (结果:[/home/zhangbingbing –eq /zhang])
{}大括号,主要是和$符号配合,作为字符串连接来使用
echo ${HOME}ismydir (结果:/home/zhangbingbingismydir)
4、预定义的变量:
4.1特殊变量
$ shell变量名的开始,如$var
| 管道,将标准输出转到下一个命令的标准输入
$# 记录传递给Shell的自变量个数
# 注释开始
& 在后台执行一个进程
? 匹配一个字符
* 匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.)
$- 使用set及执行时传递给shell的标志位
$! 最后一个子进程的进程号
$? 取最近一次命令执行后的退出状态(返回码)
$* 传递给shell script的参数
$@ 所有参数,个别的用双引号括起来
$0 当前shell的名字
$n (n:1-) 位置参数
$$ 进程标识号(Process Identifier Number, PID)
> 输出重定向
< 输入重定向
>> 输出重定向(追加方式)
[] 列出字符变化范围,如[a-z]
4.2代值变量
* 任意字符串
? 一个任意字符
[abc] a, b, c三者中之一
[a-n] 从a到n的任一字符
4.3特殊字符的表达
\b 退回
\c 打印一行时没有换行符 这个我们经常会用到
\f 换页
\r 回车
\t 制表
\v 垂直制表
\\ 反斜线本身
4.4其他字符
4.4.1分号
; 表示一行结束
4.4.2圆括号
() 表示在新的子shell中执行括号内的命令(这样可以不改变当前shell的状态。)
但是圆括号在单/双引号内失去作用,只作为普通字符。
4.4.3花括号
4.4.3.1分割命令的用法
与圆括号相似,但是:1. 花括号内的命令在当前shell中执行;2.花括号必须作为命令的第一个字符出现。
4.4.3.2 引用变量的用法
在$后面,表示变量名的开始和结束
4.4.4 方括号
相当与test命令,用来执行测试条件,通常用在需要判断条件的语句后面,例如:if,while等等。