当前位置:文档之家› 基本脚本编译

基本脚本编译

基本脚本编译
基本脚本编译

1、创建脚本文件

创建shell脚本文件时,必须在文件的第一行指明所使用的shell,指明shell后将命令输入到文件中的每一行。

#!/bin/bash

在普通的shell脚本行中,英镑符号(#)用作注释。Shell不处理脚本中的注释行。但是shell脚本文件的第一行是个特例,#后面跟着感叹号告诉shell运行下列脚本的shell。Shell 不会解析以#(#!开通的第一行除外)开头的行。

[rich@localhost ~]$ cat test1

#!/bin/bash

#This script displays the date and who's logged on

date

who

[rich@localhost ~]$ ./test1

Sun Sep 18 09:15:53 CST 2011

root pts/0 2011-09-18 09:00 (192.168.0.5)

脚本的执行:给脚本执行权限chmod u+x test1 ./脚本名称来执行脚本

将脚本放到PA TH变量中$PA TH=$PA TH:/home/bin并赋予变来那个执行权限(任何目录下都可以执行)

2、显示消息

echo命令后面添加字符串,echo命令就能显示一个简单的文本字符串。

echo命令即可使用双引号也可以使用单引号来标记文本字符串。如果要在字符串中使用它们,需要在一个文本使用一种引号类型,然后使用另一种类型标记字符串:

echo "This is a test to see if you're paying attenion"

This is a test to see if you're paying attenion

echo 'Rich says "scripting is easy".'

Rich says "scripting is easy".

[rich@localhost bin]$ cat test1

#!/bin/bash

#This script displays the date and who's logged on

echo "The time and date are:"

date

echo "let's see who's logged into the system:"

who

[rich@localhost bin]$ ./test1

The time and date are:

Sun Sep 18 09:50:07 CST 2011

let's see who's logged into the system:

root pts/0 2011-09-18 09:00 (192.168.0.5)

如果想要echo命令结果和echo文本字符串在同一行,只需对echo语句使用-n参数即可[rich@localhost bin]$ cat test1

#!/bin/bash

#This script displays the date and who's logged on

echo -n "The time and date are:"

date

echo "let's see who's logged into the system:"

who

[rich@localhost bin]$ ./test1

The time and date are:Sun Sep 18 09:52:02 CST 2011

let's see who's logged into the system:

root pts/0 2011-09-18 09:00 (192.168.0.5)

3、使用变量

通过使用以美元符号开头的变量可以从脚本中引进环境变量

[rich@localhost ~]$ cat test2

#!/bin/bash

#display user information frm the system

echo "User info for userid: $USER"

echo "UID: $UID"

echo "HOME: $HOME"

[rich@localhost ~]$ ./test2

User info for userid: rich

UID: 501

HOME: /home/rich

注意:当运行脚本时,echo命令中的环境变量会被它们的当前值所代替。无论何时当脚本中发现英镑符号时,它就会认为您引用了一个变量,要显示一个实际的美元符号,必须在它们前面加上反斜杠符号

[rich@localhost ~]$ echo "The cost of the item is $15"

The cost of the item is 5

[rich@localhost ~]$ echo "The cost of the item is \$15"

The cost of the item is $15

4、用户变量

除了环境变量,shell脚本中允许在脚本中设置自己和使用自己的变量。设置变量可以暂时存储数据并在脚本中使用他们。

用户变量可以由不超过20个字符的字母、数字或下划线组成的文本文本字符串。用户变量区分大小写,在变量、等号和变量值之间不允许有空格。

脚本中定义的变量在shell脚本中的生命周期内保留他们的值,但是当shell脚本完成时就被删除了。

[rich@localhost ~]$ cat test3

#!/bin/bash

#testing variables

days=10

guest="Katie"

echo "$guest checked in $days days ago"

days=5

guest="Jessica"

echo "$guest checked in $days days ago"

[rich@localhost ~]$ ./test3

Katie checked in 10 days ago

Jessica checked in 5 days ago

没有美元符号,shell就会把变量理解为一个普通文本字符串。

[rich@localhost ~]$ cat test4

#!/bin/bash

#testing a variable value to another variable

value1=10

value2=$value1

echo "The resulting value is $value2"

[rich@localhost ~]$ ./test4

The resulting value is 10

[rich@localhost ~]$ cat test4

#!/bin/bash

#testing a variable value to another variable

value1=10

value2=$value1

echo "The resulting value is value2"

[rich@localhost ~]$ ./test4

The resulting value is value2

5、反引号

反引号允许将shell命令中的输出赋值给变量。必须将整个命令用反引号包围起来。[rich@localhost ~]$ cat test5

#!/bin/bash

#using the backtick charater

testing=`date`

echo "The date and time are: $testing"

[rich@localhost ~]$ ./test5

The date and time are: Sun Sep 18 10:42:52 CST 2011

常用案例,利用反引号来捕获当前日期,并用它在脚本中创建唯一的文件名

[rich@localhost ~]$ cat date

#!/bin/bash

#copy the /usr/bin directory listing to a file log

today=`date +%y%m%d`

/bin/ls -la /usr/bin > $HOME/log.$today

[rich@localhost ~]$ ls

bin date log.110918 test1 test2 test3 test4 test5

6、重定向输入和输出

[rich@localhost ~]$ cat test6

[rich@localhost ~]$ date > test6

[rich@localhost ~]$ cat test6

Sun Sep 18 10:56:38 CST 2011

[rich@localhost ~]$ cat test6

testing

[rich@localhost ~]$ date >> test6

[rich@localhost ~]$ cat test6

testing

Sun Sep 18 10:58:27 CST 2011

[rich@localhost ~]$ wc < test6

2 7 37

[rich@localhost ~]$ wc << EOF

> test string

> test string 1

> test string 2

> EOF

3 8 40

[rich@localhost ~]$

7、管道

将输出命令重定向到另一条命令,而不是将命令的输出重定向到一个文件,这个过程成为管道传送。管道传送的符号是竖条操作符(|)

[rich@localhost ~]$ rpm -qa | sort > rpm.list

[rich@localhost ~]$ ls

bin date log.110918 rpm.list test1 test2 test3 test4 test5 test6

8、数字计算

expr命令允许处理命令行中的等式,但是很笨拙

[rich@localhost ~]$ expr 1 + 1

2

[rich@localhost ~]$ expr 1+1

1+1

在传送expr命令的字符可能被错误解析前,需要使用shell转义字符(反斜杠)来识别它们。[rich@localhost ~]$ expr 5 * 2

expr: syntax error

[rich@localhost ~]$ expr 5 \* 2

10

[rich@localhost ~]$ cat test6

#!/bin/bash

#An example of using the expr command

var1=10

var2=20

var3=`expr $var2 / $var1`

echo "The result is: $var3"

[rich@localhost ~]$ ./test6

The result is: 2

9、是用括号

Bash为一个变量制定一个数学值时,可以使用美元符号和方括号把数学等式括起来

[rich@localhost ~]$ var1=$[1 + 5]

[rich@localhost ~]$ echo $var1

6

[rich@localhost ~]$ var2=$[$var1 * 2]

[rich@localhost ~]$ echo $var2

12

使用方括号方法计算等式时,不必担心shel错误理解乘法符号或者其他符号。Shell知道它不是一个通配符,因为它在括号里。

[rich@localhost ~]$ cat test7

#!/bin/bash

var1=100

var2=50

var3=45

var4=$[$var1 * ($var2 - $var3)]

echo "The final result is $var4"

[rich@localhost ~]$ ./test7

The final result is 500

Bash shell只支持整数算法

[rich@localhost ~]$ cat test8

#!/bin/bash

var1=100

var2=45

var3=$[$var1 / $var2]

echo "The final result is $var3"

[rich@localhost ~]$ ./test8

The final result is 2

10、浮点解决方案

scale 变量的默认值是0。在设置scale值之前,bash计算器bc提供0小数位的答案。将scale 变量值设为4之后,bash计算器显示为4位小数位的答案。-q命令行参数禁止bash计算器的冗余欢迎标语。

[rich@localhost ~]$ bc -q

3.44 / 5

scale=4

3.44 / 5

.6880

quit

[rich@localhost ~]$

除了普通的数字,bash计算器也识别变量。一旦定义了变量,可以在整个bash计算器中使用该变量。Print语句允许打印变量和数字。

[rich@localhost ~]$ bc -q

var1 * 4

40

var2=var1 / 5

print var2

2

quit

[rich@localhost ~]$

11、在脚本中使用bc

[rich@localhost ~]$ cat test9

#!/bin/bash

var1=`echo "scale=4; 3.44 / 5" | bc` echo "The answer is $var1"

[rich@localhost ~]$ ./test9

The answer is .6880

[rich@localhost ~]$ cat test10

#!/bin/bash

var1=100

var2=45

var3=`echo "scale=4; $var1 / $var2" | bc` echo "The answer for this is $var3" [rich@localhost ~]$ ./test10

The answer for this is 2.2222

[rich@localhost ~]$ cat test11

#!/bin/bash

var1=20

var2=3.14159

var3=`echo "scale=4; $var1 * $var1" | bc` var4=`echo "scale=4; $var3 * $var2" | bc` echo "The final result is $var4"

[rich@localhost ~]$ ./test11

The final result is 1256.63600

[rich@localhost ~]$ clear

[rich@localhost ~]$ cat test12

#!/bin/bash

var1=10.46

var2=43.67

var3=33.2

var4=71

var5=`bc << EOF

a1=($var1 * $var2)

b1=($var3 * $var4)

a1+b1

EOF

`

echo "The final answer for this mess if $var5"

[rich@localhost ~]$ ./test12

The final answer for this mess if 2813.9882

12、退出脚本

为了向shell表明,命令已经处理完毕,每条运行在shell都使用一个推出状态。这个推出状态是介于0——255之间的数值。当命令执行完成时,命令就会把推出状态传递给shell。Linux提供$?特殊变量来保存最后一条命令执行结束的推出状态。一条命令成功完成的推出状态是0.如果命令执行错误,那么推出状态机会是一个正整数。

Linux推出状态代码

代码描述代码描述

0 命令完成成功128 无效的推出参数

1 通常的未知错误128+x 使用Linux信号x的

致命错误

2 误用shell命令130 使用Ctrl+c终止命令126 命令无法找到255 规范外的推出状态127 没有找到命令

[rich@localhost ~]$ date

Sun Sep 18 14:38:16 CST 2011

[rich@localhost ~]$ echo $?

[rich@localhost ~]$ asdf

-bash: asdf: command not found

[rich@localhost ~]$ echo $?

127

[rich@localhost ~]$ ./test1

-bash: ./test1: Permission denied

[rich@localhost ~]$ echo $?

126

[rich@localhost ~]$ date -t

date: invalid option -- t

Try `date --help' for more information.

[rich@localhost ~]$ echo $?

1

[rich@localhost ~]$

exit命令允许在脚本结束时,指定一个推出状态。

[rich@localhost ~]$ cat test13

#!/bin/bash

#testing the exit status

var2=30

var3=$[ $var2 + $var1 ]

echo "The final answer is: $var3"

exit 5

[rich@localhost ~]$ ./test13

The final answer is: 40

[rich@localhost ~]$ echo $?

5

也可以在exit命令参数中使用变量

[rich@localhost ~]$ cat test14

#!/bin/bash

#testing the exit status

var1=10

var2=30

var3=$[ $var2 + $var1 ]

echo "The final answer is: $var3"

exit $var3

[rich@localhost ~]$ ./test14

The final answer is: 40

推出状态值在0——255之间的数,shell通过使用模计算到了这一点。一个值的模是出操作之后的余数。运算结果结果就是那个特定的整数256除了之后的余数。本例中结果值是300余数是44,44就是提出状态。

[rich@localhost ~]$ cat test14b

#!/bin/bash

#tesing the exit status

var1=10

var2=30

var3=$[ $var1 * $var2 ]

echo "The value is $var3"

exit $var3

[rich@localhost ~]$ ./test14b

The value is 300

[rich@localhost ~]$ echo $?

44

自动化测试流程图解析

功能自动化测试流程解析 本流程是描述软件功能自动化测试过程中的步骤、内容与方法,明确各阶段的职责、活动与产出物。 1流程图 2流程说明 2.1 测试计划(可选) 与以前的测试计划过程一致,只是在原来的测试计划中,添加对项目实施自动化测试所需的资源、测试范围、测试进度的描述。该过程产出物为《测试计划》。 2.2 自动化测试用例设计 根据《测试计划》、《软件需求规格说明书》、《系统测试用例》设计出针对自动化测试的测试用例。测试用例的粒度精确到单个功能点或流程,对于各个功能点的业务规则,通过对脚本添加相应的检查点来进行测试。该过程的产出物是《自动化测试用例》。

2.3 自动化脚本设计(可选) 根据《软件需求规格说明书》、《自动化测试用例》、《系统原型》、《系统设计说明书》编写《自动化脚本设计说明书》,其主要内容包括:分析当前项目,设计出适合的脚本基本架构,针对特殊自动化测试用例设计可行的脚本编写方法,设计特殊检查点的实现方式,并对潜在的技术难点提出解决方案。该过程的产出物是《自动化脚本设计说明书》。 2.4 自动化脚本编写 根据《软件需求规格说明书》、《自动化测试用例》、《系统原型》、《自动化脚本设计说明书》,录制、调试、编写各个功能点的自动化测试脚本,并添加检查点,进行参数化。该过程还需要编写数据文件处理脚本、日志文件处理脚本、数据库处理脚本、公共检查点处理脚本等等。该过程的产出物是各个功能点的自动化测试脚本和其他公共处理脚本。 2.5 自动化测试数据设计 根据《软件需求规格说明书》、《自动化测试用例》设计出对各个功能点和相关业务规则进行测试的输入数据和预期输出,填写入对应的数据文件中。该过程的产出物是各个功能点的数据文件。 2.6 自动化测试执行 搭建好测试环境。根据《自动化测试用例》,执行自动化脚本,对系统进行自动化测试,并自动记录测试结果到日志文件中。 2.7 自动化测试结果分析 对测试结果文件中报告错误的记录进行分析,如果确实是由于被测系统的缺陷导致,则提交缺陷报告。对自动化测试的结果进行总结,分析系统存在的问题,提交《测试报告》。 2.8 自动化测试脚本维护(可选) 如果系统发生变更时,对自动化测试脚本和相关文档包括《自动化测试用例》、《自动化脚本设计说明书》进行维护,以适应变更后的系统。

基于JavaScript(网页脚本语言)编写的万年历(含源文件)

《软件系列课程设计——基于JavaScript (网页脚本语言)编写的万年历》 班级 学号 姓名 指导教师 成绩______________________________ 2010年06 月18 日

目录 摘要………………………………………………………………………一、引言………………………………………………………………… 1.应用背景……………………………………………………… 2.可行性分析…………………………………………………… 3.研究路线及内容……………………………………………… 二、系统开发工具……………………………………………………… 三、系统设计(详细设计)……………………………………………… 四、结束语 1.总结………………………………………………………………… 2.参考文献…………………………………………………………… 摘要 极品万年历,带有带有电子时钟,可看不同时区时间,阳历、农历同步显示,鼠标指出,

天干地支计时即出。 一、引言 1,、应用背景 随着科技的发展,人们渴望着把现实生活中的林林总总都搬到电脑上,大到工程设计,小到极品万年历。 2、可行性分析 方便查看农历重要的日子,方便外出办公校正不同区时…… 3、研究路线及内容 通过用JavaScript语言编写代码,并利用文本保存为HTTP或HTML格式。并试图实现一下内容: 1、可看阳历; 2、可看农历; 3、可看时间; 4、可看天干地支计时; 5、可划分区时。 二、系统开发工具 JavaScript网页脚本语言,IE、360安全浏览器或其他浏览器。 三、系统设计 1、程序源码 cc万年历