Linux中shell scripts

qimingstack 2011-11-15

shell脚本很多人谈论说难,当然,这点不可否认。但是shell脚本难,并不是难在它的规则,语法上。shell脚本趋向于编程,编程难吗?难!!它难在哪!它难在写程序时要像计算机一样去思考,这就是难点。shell也一样,书写语法,规则,并不难。几个小时你就可以学会。但是,把自己变成机器一样去思考,这就比较难了。如果想要克服这一点,那么需要长时间的磨练与不停的思考。

shell scripts的注意事项:shell scripts的撰写执行需要注意以下几点:

1、指令的解析执行是从上至下,从左到右的。

2、指令、选项与参数间的多个空格会被忽略。

3、空行和[TAB]键视作空格。

4、读取到Enter符号(CR)就开始尝试执行

5、可以用"\"换行

6、“#”为注释

shell  script 的书写,把脚本单独放一个目录中,脚本要分段书写,并充分利用注释。

1、第一行#!/bin/bash

2、程序内容说明-文件头

3、主要环境变量、变量宣告

4、函数、主程序部分

5、执行成果报告-返回值

如果一个脚本长时间没用,或者是他人接手的时候根本看不懂这个脚本是干什么用的,本着为他人方便为自己方便的原则,就是写文件头。文件头的内容包括,脚本名称、脚本的功能描述、作者的联系方式、版权宣告、历史记录、其他,等等

在shell脚本中变量是最常用的,而且还会用到返回值,那么什么是变量,脚本返回值代表什么。

变量是脚本编程中进行数据表现的一种方法,是计算机为了保留数据项,而在内存中分配的一个位置或者一组位置的标识或名字、变量既可以出现在算术操作中,也可以出现在字符分析过程中、变量的名字就是变量保存值的地方。引用变量的值就叫做变量的替换。

变量名必须以字母或者下划线开始,后面跟字母数字或下划线。变量用“=”赋值时不要留空格。变量名是大小写敏感的、可以定义NULL值变量。例如d= c="",不要用特殊字符。如:? , * 等,不要和内部变量冲突。

变量宣告、函数等主程序等,为脚本内容,执行完后script的返回值。返回值是命令的退出状态,用来检测命令执行是否成功。比如

0   代表   成功(success)

non-zero    代表  Failure

2   代表    不正确的用法(incorrect  usage)

126  代表  不可执行(Not  an  executable)

127   代表  命令找不到(Command   not   found)

我们可以用 exit n 、return N 来定义,如下图我们可以看下命令执行后的,返回值,如下图

Linux中shell scripts

某些时候需要两相互关联的变量才能完成一个脚本,这个时候需要数组格式var[index]=value 如下图

Linux中shell scripts

shell脚本常用的循环。

------------------------------------------

条件语句的,格式

if [condition]

then

command

fi

-------------------------------------------

if[condition];then

command1

else

command2

fi

---------------------------------------------

if[condition1];then

command1

elif[condition2];then

command2

else

command3

fi

-----------------------------------------------

for循环

格式:for NAME in [list];do

COMMANDS;

done

例:如下图:

Linux中shell scripts

--------------------------------------------------

while循环

格式:while CONTROL-COMMANDS;do

CONSEQUENT-COMMANDS;

done

例:如下图

Linux中shell scripts

---------------------------------------------------------------

until循环

格式:until  TEST-COMMAND;do

CONSEQUENT-COMMANDS;

done

例:如下图

Linux中shell scripts

-------------------------------------------------------

case循环

格式:caseEXPRESSION in

CASE1 )

COMMAND-LIST

;;

CASE2)

COMMAND-LIST

;;

...CASEN)

COMMAND-LIST;;

esac

例:如下图

Linux中shell scripts

-----------------------------------------------------------

select (从ksh引入)

格式:select WORD [in LIST];do

RESPECTIVE-COMMANDS;

done

例如下图

Linux中shell scripts

-------------------------------------------------------------

从上面的例子中看到有break的字样,break语句用来在正常结束之前退出当前循环,和break想对应的还有continue语句,continue语句是几句for,while,until, select内的循环。

在shell里还有正则表达式,前面文章里已经介绍过,就不详加介绍, shell就先讨论到这里

相关推荐