shell脚本利用shell功能写的纯文本文件,将shell语法和命令写在里面,搭配正则表达式、管道命令与数据流重定向等。不需要编译既可执行。最简单的功能就是整合一些连续命令,将它写入script中,用script执行一连串的命令输入。但是shell script用的是外部命令和一些bash shell的一些默认工具,调用外部函数库,所以速度慢,占用cpu较多。
shell脚本中的path只是临时的环境变量,只作用于脚本执行的过程中。具体定义:
PATH=/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin 定义临时变量
export PATH 将临时变量转换为临时环境变量
shell script执行方式区别
1、直接命令执行的方式
直接命令执行或者用bash或sh执行脚本,其实script是在子进程内执行,当子进程完成后,子进程的变量和操作不会传回父进程。 sh sh02.sh
2、用source 执行脚本,在父进程中执行 source sh02.sh
利用test命令检测系统上某些文件或者相关的属性
文件属性操作
test命令可以判断文件是否存在,以及侦测各种的文件属性。
test -e filenanme
命令参数 含义
-b file file存在,并且为块特殊文件,则为真
-c file file存在,并且为字符特殊文件,则为真
-d file file存在,并且为目录,则为真
-e file file存在,则为真
-f file file存在,并且为常规文件,则为真
-g file file存在,并且设置了文件的 SGID 位,则为真
-G file file存在,并且为组所有,则为真
-r file file存在,并且有读权限,则为真
-s file file存在,并且长度大于0,则为真
-w file file存在,并且有写权限,则为真
-x file file存在,并且有执行权限,则为真
算术比较运算
在shell中,test命令可以比较两个数字的大小,相等等。
操作符 含义
num1 -eq num2 两个数字相等,则为真
num1 -ge num2 num1大于等于num2,则为真
num1 -gt num2 num1大于num2,则为真
num1 -le num2 num1小于等于num2,则为真
num1 -lt num2 num1小于num2,则为真
num1 -ne num2 num1不等于num2,则为真
逻辑运算
test可以进行基本的逻辑运算
表达式 含义
test EXPRESSION EXPRESSION表达式为真,则结果为真
test ! EXPRESSION EXPRESSION表达式为假,则结果为真
test EXPRESSION1 -a EXPRESSION2 逻辑与,EXPRESSION1与EXPRESSION2都为真,结果为真
test EXPRESSION1 -o EXPRESSION2 逻辑或,EXPRESSION1与EXPRESSION2有一个为真,结果为真
判断字符串
test –n 字符串 #字符串的长度非零
test –z 字符串 #字符串的长度是否为零
test 字符串1=字符串2 #字符串是否相等,若相等返回true
test 字符串1!=字符串2 #字符串是否不等,若不等反悔false
默认参数
$# 代表后街的参数个数
$@ 代表参数进行罗列,$1 $2 $3这样
$* 类似$@
用shift对参数进行偏移
shift 3#
支持if then fi 条件判断语句
if []&&[]||[]; then
echo "OK"
exit 0
fi 结束标志
if []; then
echo "OK"
else
XXXXXXX
fi 结束标志
if []; then
echo "OK"
elif []; then
echo "elif"
else
echo "esle"
fi 结束标志
支持case 参数 in
“XXX” )
echo "do what you want"
;;
esac 结束符
while [condition]
do
程序体
done 结束符
until [conditon]
do
程序体
done
for 固定形式
for var in 固定值1 固定值2 固定值3
do
程序体
done
for ((s初始值;限制值;执行步长))
do
程序体
done
shell script追踪和调试
sh [var] shellname.sh
var=
-n 不执行,仅查语法错误
-v 执行前,将script内容打印出来
-x 将执行过程全部显示出来 墙裂建议用这个进行错误调试
网友评论