转自:http://blog.csdn.net/misskissc/article/details/8088128
1 脚本介绍
简单的说,脚本就是使用某种特定的描述性语言,依据一定的格式编写而成的,可在某种特定环境下顺序执行的文本文件。也可以将脚本看成是某种系统下的命令的逻辑组合,这些命令会被依次执行。在Linux下,在一个文件内编写脚本程序跟直接在shell界面编写这些语句的效果是一样的,只不过将这些语句写在一个文件中更加的方便。
2 创建脚本文件
在Linux下,可以通过vi命令创建一个诸如script.sh的文件:vi script.sh。创建好后脚本文件后就可以在文件内用脚本语言要求的格式编写脚本程序了。
3 最小脚本实现
在2中创建的脚本文件中输入以下下代码并保存退出
- #!/bin/bash
- echo "hello world!"
修改脚本文件运行权限chmod 777 script.sh, 后运行文件./script.sh
hello world!
#!/bin/bash是为了说明该文件为应用于bash环境下的脚本。每个脚本程序必须在开头包含这个语句。
编写完脚本后使用chmod+x命令为该脚本添加可执行权限(查看chmod命令使用)
4 bash脚本语法
在bash脚本中执行的操作均为在bash环境下的能执行的操作命令。
(1) 变量
变量赋值:变量赋值时'='两边不能有空格,其余复制方面跟c语言差不多。标识符之间要用空格相互隔开,否则容易出错。
变量获取:用’$'表示获取变量的值。例:
- a="hello world!"
- echo $a
这样,就能将a的值输出来。
(2) if/then规则
if/else的使用和C语言的用法,都做条件语句。使用时需要注意点:
- 每一组if/then的结束都应附上一个fi与开头的if对应
- "[]"应当注意用空格隔开,”]“后紧跟";"
- "[]"内的条件与"["、"]"都有一个空格相隔。
例:
- if [ -f $a ];then
- echo "hello world!"
- fi
if语句里面的条件表示若$a存在且为一个文件,则输出hello world!, 条件语句结束。
(3) for/in规则
bash下的for/in使用规则
for var in list
do
statement
done
其中,var是要列举的变量,list是变量var的一个集合,do....done中的语句表示在list 中还未被列举完时需要执行的语句。使用时需要注意:
- for后面的变量未加"$",但在do...done中要使用var变量时需要加上"$"
- 若使用"()"将list括起来时,list中的内容将会被视为一个元素
- 当for后没有跟in [list]部分时,则循环控制变量将取遍命令行的所有参数
- 当在shell界面写脚本语句时,若for语句和do语句都写在同一行,则for语句后面需要用";",可根据shll界面的错误提示来更改脚本
例:
- <span style="font-size:14px;">for a in $(ls /home/www/)
- do
- if [ -f $a ]
- iconv -f utf-8 -t gbk $a
- fi
- done</span>
当/home/www下的文件或者目录未被列举完时,若检索到的当前变量a为文件,则把所有的utf-8编码的文件转换为gbk编码。
(4) Case/esac规则
Bash中的case/esac结构与C语言中的swich语句的功能比较相似。其基本结构:
case “$var” in
statments1;;
conditionl )
statment2;;
…
* ) default statements;;
Esac
注意:
- conditionl使用空格与“)”隔开
- statement*后使用两个“;”结尾
- * )后陈诉除statements之外的情况
- 使用esac与case呼应结尾
可在linux shell界面编写case...Esac例子自行调试错误。
5 脚本常用变量
HOME用户的主目录
PATH执行命令时的搜索目录
TZ时区
PS1 SHELL命令行的提示符
PS2 SHELL命令行的第二提示符
MANPATH man指令的搜索路径
TERM终端的类型
6 脚本条件判定规则
7 脚本逻辑与或非条件判断
在linux shell界面或者新建文件编写脚本来实现指定目标是一件事倍功半的事。而且脚本比较简单,易掌握,使用与操作某目录下具某些共同属性的批量数据。
Note Over.