1、shell script的编写与执行shell
一、shell script 的编写中还须要用到下面的注意事项:bash
a、命令的执行是从上到下,从左到右地分析与执行oop
b、命令、参数间的多个空白都会被忽略掉测试
c、空白行也将被忽略掉, 而且[tab]按键所得的空白一样视为空格键调试
d、若是读取到一个Enter符号(CR),就尝试开始执行该行(或该串)命令进程
e、至于若是一行的内容太多,则可使用“\[Enter]”来扩展至下一行ip
f、"#"可做为批注。it
二、执行文件(/home/sam/shell.sh)io
一、直接命令执行: shell.sh文件必需要具有可读与可执行(rx)的权限,而后:function
绝对路径: 使用/home/sam/shell.sh来执行
相对路径: 假设工做目录为/home/sam/ , 则使用./shell.sh
变量“PATH”功能: 将shell.sh放在PATH指定的目录内, 例如:~/bin/
二、以bash进程来执行:经过“bash shell.sh”或“sh shell.sh”来执行
三、script的执行方式的区别(source, sh script, ./script)
一、利用直接执行的方式来执行script:
不管是绝对路径/相对路径仍是$PATH内, 或者是利用bash(或sh)来执行脚本时,该script都会使用一个新的bash环境来执行(子进程)
二、利用source来执行脚本: 在父进程中执行
2、善用判断式
一、 利用test命令的测试功能
如:test -e /sam && echo "exist" || echo "Not exist"
二、利用判断符号[]
如: [-z "$HOME"] ; echo $?
注意:
a、在括号[]内每一个组件度须要有空格键来分隔;
b、在中括号内的变量,最好都以双引号括起来;
c、在中括号内的常量, 最好都以单或双引号括起来。
三、shell script 的默认变量($0 $1 ...)
$0: 执行的脚本文件名
$1,$2,...: 第1,2,...个参数
$#: 表明后接的参数“个数”
$@: 表明“$1”、“$2”、“$3”之意,每一个变量是独立的(用双引号括起来)
$*: 表明"$1c$2c$3c$4",其中c为分隔字符, 默认为空格键
shift: 形成参数变量号码偏移
shift 会移动变量, 并且shift后面能够接数字, 表明拿掉最前面的几个参数的意思。
3、 条件判断式
一、利用 if...then
单层:
if [条件判断式]; then
逻辑
fi <--if语句结束语
多重:
if [条件判断式]; then
逻辑
elif [条件判断式]; then
逻辑
else
逻辑
fi
二、利用case...esac判断
case $变量名称 in
"第一个变量内容" )
程序段
;;
"第二个变量内容")
程序段
;;
*)
exit 1
;;
esac
3 、利用function功能
function fname(){
程序段
}
4、循环(loop)
一、while do done, until do done(不定循环)
while [ condition ]
do
程序段落
done
----------》当condition条件成立时,就进行循环
until [ condition ]
do
程序段落
done
-----------》当condition条件成立时,就终止循环
二、for ... do...done(固定循环)
for var in con1 con2 con3...
do
程序段落
done
三、for ...do ...done的数值处理
for((初始值; 限制值; 执行步长))
do
程序段
done
5、shell script的追踪与调试
sh [-nvx] scripts.sh
-n : 不要执行script 仅查询语法的问题
-v: 在执行script前, 先将script的内容输出到屏幕上
-x: 将使用到的script内容显示到屏幕上