1、脚本的执行
A、顺序
从上而下,自左向右;忽略多余的空格、空行和tab符号;遇到Enter符(CR)执行该行命令;井号(#)可以作为注释符。
B、方式
a、直接调用执行: 绝对路径执行;相对路径执行;环境变量PATH执行(脚本在子shell进程中执行)
b、bash进程执行: bash script.sh / sh script.sh(脚本在子shell进程中执行)
c、source执行: 直接在当前shell进程中执行脚本
echo -n 不输出换行符
echo -e 特殊处理输出行中的转义字符
2、条件判断
A、test命令
B、判断符号[]
a、中括号内的每个组件都需要用空格来分割;
b、中括号内的变量最好以双引号括起来;
c、中括号内的常量最好以单引号括起来。
C、Shell脚本的默认变量
$0 脚本文件名
$1 脚本的第一个参数
$2 脚本的第二个参数
……
$# 脚本的参数个数统计
$@ 脚本的每个参数,分别用双引号括起来,相互独立
$* 脚本的每个参数,参数之间用分割字符(默认为空格)分开,作为一个整体用一个双引号括起来
shift: 参数变量移动
shift n 移除最左边的n个变量
D、条件判断式
a、单层、简单条件判断式
if [ condition ];then
command
fi
b、多重、复杂条件判断式
if [ condition ];then
command1
else
command2
fi
if [ condition1 ];then
command1
elif [ condition2 ];then
command2
else
command3
fi
c、变量确定的分支执行
case $VAR in
"Value1")
command1
;;
"Vaule2")
command2
;;
*)
command3
;;
esac
d、定义函数(function)
function fname(){
command
}
定义位置: 函数必须在调用位置之前定义
内置变量: $0代表函数名,$1代表函数的第一个参数,$2代表函数的第二个参数,以此类推
3、循环执行(loop)
A、不定循环
while [ condition ]
do
command
done
util [ condition ]
do
command
done
B、固定循环
for VAR in con1 con2 con3
do
command
done
数值形
for ((start;limit;step))
do
command
done
4、Shell脚本的追踪与调试
sh [-nxv] script.sh
-n 不执行脚本,仅查询语法问题
-v 执行脚本前,将script文件的所有内容输出到屏幕上,包括注释内容
-x 将要执行的替换后的script命令输出到屏幕上,前面带有+号,不会显示注释