1) shellscripts简介
a) shellscripts执行方式
直接命令下达:shell.sh档案必须拥有rw权限;
以bash程序来执行:bash shell.sh或者sh shell.sh;
b) helloworld!
我们使用的是 bash ,所以,必须要以『 #!/bin/bash 』来宣告这个档案内的语法使用 bash 的语法.
若前一个命令执行正确,变量$?会回传一个0,exit 0 表示退出scripts并且回传一个scripts执行成功的参数给系统。
#shsh01.sh 执行
#chmoda+x sh01.sh;./sh01.sh 赋予x权限,执行
c) 理清几个问题:
$variable,${variable} 这是变量的写法;
$(command) 这是子命令的写法,注意{}与()的不同;
${:-}表示如果:之前的变量没有设定,那么就去-之后的内容;
d) 利用date建立档案名
e) 数值运算
两种方式
#declare –i total = 计算式;echo $total;
#total=$((计算式));
f) scripts执行方式差异
无论是前面讲的两种方式中的哪一种,执行scripts都是在一个新的bash环境中执行,也就是说实在子程序的bash中执行,这种方式下,当子程序执行完成时,在子程序中的各项变量、动作将会结束而不会传给父程序。
利用 source 来执行脚本:在父程序中执行
2) 善用判断式
a) test指令的测试功能
b) 判断文件类型
c) 利用判断符号 [ ]
#[ "$HOME" =="$MAIL" ];echo $?
在中括号 [] 内的每个组件都需要有空格键来分隔;
在中括号内的变数,最好都以双引号括号起来;
在中括号内的常数,最好都以单或双引号括号起来。
d) Shellscript 的默认变量($0,$1...)
指令可以带有选项和参数
3) 条件判断式
a) 简单条件判断式
&& 代表 AND ;|| 代表 or ;
[ "$yn" == "Y" -o"$yn" == "y" ]
上式可替换为
[ "$yn" == "Y" ] || ["$yn" == "y" ]
b) 复杂条件判断式
c) case..... esac
[case $变量 in ]中的$变量可以有两种方式获得:
直接下达式:script.sh variable
交互式:用户read输入
d) function
4) 循环loop
a) whiledo done, until do done (不定循环)
b) for...do...done(固定循环)
c) for...do...done(数值处理)
5) shellscript 的追踪与debug
6) 总结
a) 良好的程序撰写习惯中,第一行要宣告 shell (#!/bin/bash) ,第二行以后则宣告程序用途、版本、作者等
b) 要建立每次执行脚本都有不同结果的数据,可使用 date 指令利用日期达成;
c) script的执行若以 source来执行时,代表在父程序的 bash 内执行之意!
d) 我们可使用 sh -x script.sh 来进行程序的 debug
-------以上整理自鸟哥的Linux私房菜