Linux学习笔记(13)——shell scripts

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私房菜

你可能感兴趣的:(linux,shell)