***********************************************************************************************************************************
一、什么是shell脚本
shell除了是命令解释器之外还是一种编程语言,用shell编写的程序类似于dos下的批处理程序。
用户可以在文件中存放一系列的命令,通常将shell编写的程序成为shell脚本或shell程序。
将命令、变量和流程控制有机的结合起来,将会得到一个功能强大的编程工具。shell脚本语言非常擅长处理文本类型的数据,由于Linux系统中的所有配置文件都是纯文本的,所以shell脚本语言在管理linux系统中发挥了巨大作用。
二、脚本的编码规范
一个bash脚本的正确的起始部分应该以#!开头:
#!/bin/bash
在调用bash脚本的时候,以#!开头的语句通知系统用何解释器执行此脚本。
如果bash是你的默认shell,那么脚本的开头也不用非得写上#!。但是如果你是用不同的shell来开启一个脚本的话,比如tcsh,那么你就必须需要#!了。良好的编码规范还要求以注释形式说明如下的内容:
脚本名称、脚本功能、版本声明、复杂脚本应对算法做简要说明
下面列出一个脚本的helloWorld程序:
#!/bin/bash
#program:
#This program shell is "Hello World"
echo -e "Hello World!\a\n"
exit 0
下面给出一个脚本的执行过程:
a. 创建一个脚本test.txt
touch.txt
b. 打开新创建的脚本test.txt
vi test.txt
c. 编辑脚本
d.利用wq命令保存编辑的脚本
e.执行脚本 sh.test.txt
执行脚本有两种方式,一种是命令 sh test.txt
另一种方式是 ./test.txt 执行脚本,不过一般新创建的脚本是没有执行权限的,执行的时候会报-bash: ./test/txt: No such file or directory结果,
这时需要用户利用chmod命令修改文件权限,可以一项一项的修改,本人一般都是直接使用 chmod 744 test.txt 命令,将文件的所有权限添加,这个可以根据各自的习惯修改添加完权限之后,
再执行test.txt脚本,成功:
三、shell变量
定义shell变量
name=string
name 是变量名,变量名用小写字母命名
=是赋值符号,两边不能有空格,否则将视为命令string是被赋的变量值
例如:
v1=ceshi
v2='this is a shell script test'
shell变量表达式:
表达式 说明
${#String} $string的长度
${string:position} 从position开始提取字符串
${string:position:length} 从$:position开始提取长度为$length的字串
${string#substring} 从开头删除最短匹配字串
${string##substring} 从开头删除最长匹配字串
${string%substring} 从结尾删除最短匹配字串
${string%%substring} 从结尾删除最长匹配字串
${str#hello} 删除以"hello"开始的字符串
${str#hello*.} 删除开始"hello"到"." 的所有字符(最短匹配)
${str##hello*.} 删除开始"hello" 到"."的所有字符(最长匹配)
test与[]
-f 文件是否存在
-d 目录是否存在
-r 文件是否有读权限
-w 文件是否有写权限
-x 文件是否有执行权限
注意:
在中括号中必须都要使用空格来分隔
在中括号中的变量,最好都要以双引号括起来
在中括号中的常数,最好都以单引号括起来
例如:
[ "$a" == "$b" ] && echo 'Yes' || echo 'No'
[ '12' == '10' ] && echo 'Yes' || echo 'No'
***********************************************************************************************************************************