shell script是利用shell的功能所写的一个脚本,通过将一些语法与命令写在里面,搭配正则表达式、管道命令、数据重定向等功能,达到我们想要的目的。类似于早期的DOS文件,但功能更加强大。
Hello Word!:
shell script文件的首行要表明 #!bin/bash 声明这个script文件要使用的shell名称
程序的内容说明:包括内容与功能、版本信息、作者及联系方式、建立日期、历史记录等以方便修改程序
主要的环境变量的声明,比如PATH等
程序的主体部分(包含适当的程序注释、程序运行信息的说明)
#!bin/bash
# Program:
# This program shows "Hello Word!" on your screen.
# History:
# 2018/8/6 Wang Yize v0.1
PATH=/bin:/sbin:/usr/bin:/usr/sbin/usr/local/bin:/usr/local/sbin
export PATH
echo -e "Hello Word! \a \n"
exit 0
程序最后的 exit 0 用于我们使用$?来查看上一个程序的运行结果时使用。
1、交互式脚本
有时候我们需要用户输入一个变量的内容,这时可以使用read命令来进行脚本的交互
例如:在script中加入:
read -p "Please input your name: " name #用户输入姓名
可以实现用户输入姓名。
2、数值运算
可使用declare方式声明一个整形数值进行数值运算,也可以直接使用var=$((运算内容来进行数值运算))
script的执行方式:可以利用直接执行的方式来执行script,但是直接执行的script使用新的bash环境来执行脚本内的命令。因此当程序执行完毕时,在当前bash下并不能查看并使用script内的变量,如果想要查看,则必须要求脚本在当前bash环境下执行,使用source *.sh可以使脚本在当前环境下执行
判断式、
1 利用test命令可以实现测试功能
另外,判断符号[]的使用方法和test基本相同,但需要注意的是,为了区分判断符号和通配符号以及正则表达式中的[]功能,我们需要在使用时遵守以下规则:
在[]内的每个组件之间都用空格分隔开;
在[]内的所有变量,都用双引号括起来;
在[]内的所有常量,也用双引号括起来;
2 默认变量
在命令的使用过程中,我们可以使用很多的参数,script也可以跟很多的参数,并且已经设置好了变量的名称:
*.sh opt1 opt2 opt3 opt4 ...
$0 $1 $2 $3 $4 $...
如上所示,脚本文件的名称使用变量$0表示,第一个参数用$1表示,依此类推,特殊的比如$#表示当前有多少个参数,$*表示所有的参数,中间使用空格分隔。
使用shift关键字,可以忽略参数,例如shift 表示忽略第一个参数,$1表示第二个参数,shift 3表示忽略三个参数,$1表示第四个参数。
3 条件判断式
if [ condition_1 ]; then
content
elif [condition_2]; then
content
else
content
fi
4 case...esac语句
case $variables in
"content_1")
content
;;
"content_2")
content
;;
*)
content
exit number
;;
esac
5 函数
function fname(){
content
}
...
fname
...
要注意的是,函数和一个脚本类似,也有自己的内置变量,$0表示函数名,$1表示函数后跟的第一个参数。
6 循环
# while do done
while [ condition ]
do
content
done
# until do done
until [ condition ]
do
content
done
# for do done
for var in con1 con2 con3 ...
do
content
done
for (( 初始值;限制值;执行步长))
do
content
done
通常一个script可以使用sh命令进行调试:
-n 参数可以只调试而不运行,如果没有错误则没有错误信息
-v 输出脚本内容
-x 将运行的脚本内容输出到屏幕,可以看到执行到某一个位置的时候程序的运行情况,比较常用。