shell script是利用shell的功能所写的一个“程序”,这个程序使用纯文本,将一些shell的语法和命令(含外部命令)写在里面,搭配正则表达式,管道命令与数据流重定向等功能,达到我们所需要的处理目的。
shell script的用途
- 自动化管理的重要依据:管理主机的任务有查询登录文件、追踪流量、监控用户使用主机状态、主机各项硬件设备状态、主机软件更新查询等
- 追踪和管理系统的重要工作
- 简单入侵检测功能
- 连续命令单一化
- 简易的数据处理
- 跨平台支持与学习历程较短
shell scrpit的注意事项
- 命令从上而下,从左至右分析和执行
- 命令、参数间的多个空白会被忽略
- 空白行也会被忽略
- 如果读取到一个Enter符号,就尝试执行该行命令
- 如果一行代码太多,可以用[enter]来进行扩展
- “#”作为批注
shell script如何进行执行
- 直接命令执行
- 绝对路径:/path/to/your/shell.sh
- 相对路径: ./shell.sh
- 将shell.sh存放在PATH指定的目录
- 以bash进程来执行:bash shell.sh sh shell.sh
不同执行方法的区别
- 利用直接执行的方式来执行script:该script会使用一个新的bash环境执行的脚本内容,中途产生的变量不会回传到父进程中
- 利用source执行脚本,会在父进程中进行
shell script编程基础
shell script既然被称为一门“编程语言”,那么就相应的具有以下三个要素:
- 基本表达式形式
- 组合的方法
- 抽象的方法
表达式
除了调用bc进行数值计算,我们还可以直接在bash中进行运算var=$((运算内容)) 或 declare -i total=$number1*$number2 #+ - * / %
命名和环境
一般而言,运算结果都需要进行储存方便再次调用,所以就引入了变量。
var=value # 定义变量
unset value # 删除变量
echo $var # 显示变量
declare [-aixr] var #声明变量类型 -a:数组,-i:整形,-x:效果同于export,-r:变量设置为readonly,变量定义后默认为字符型
#通过交互获取用户输入的变量
read -p "提示信息" 变量名
#显示信息
echo -e "输出信息 $变量名"
变量分为环境变量和自定义变量,环境变量作用于全局bash进程,而自定义变量作用于当前bash进程。我们定义的变量都是自定义变量,可以使用export var
定义为环境变量
复合过程
在其他编程语言中都有一种称为函数的抽象技术,shell script同样拥有。
#定义
function fname() {
}
# 例子
function printit(){
echo -n "This is a simple test "
}
printit
然而仅仅有函数,知道如何定义变量还是不够,我们可能还需要对变量进行判断,需要重复进行运算,所以我们需要if条件判断,需要while和for的循环语句
条件判断语句
#!/bin/bash
if [判断1]; then
执行内容
##多重判断
elif [判断2]; then
执行内容
else
执行内容
#结束
fi
循环(loop)
# while do... done循环
while [condition]
do #循环开始
程序段落
done #循环结束
#until do ...done循环
until [condition]
do
程序段落
done
# for...do...done(固定循环)
for var in cond1 cond2 cond3...
do
执行语句
done
#或类似于C语言
for ((i=1;i<=$num;i=i+1))
do
echo $i
done
shell script的追踪与调试
sh [-nvx] scripts.sh
-n : 不执行scripts,仅查询语言的问题
-v : 在执行scripts之前,先将scripts内容输出到屏幕上
-x : 将使用到的scripts输出到屏幕上
以上就是shell scripts编程的语法部分,仅供备忘。