实验3-5 Shell脚本的设计实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验3-5 Shell脚本的设计实验

【实验目的】

掌握shell脚本使用.

【实验步骤】

第一步:深入理解let命令的用法。比如我们可以用+=、(())等方式来实现运算符

let命令:let命令是bash shell内置命令,用来执行整型算术运算和数值表达式测试。可用命令help let查看当前bash版本支持的let操作符。

1 $ i=5 or let i=5 //变量i被赋值为5。

2 $ let i=i+1

$ echo $i

6 // let命令给变量i加1。在执行算术运算时,不需要用美元符来展开变量。

3 $ let "i = i + 2"

$ echo $i

8 //如果参数包括空白符,则需要使用引号。

4 $ let "i+=1"

$ echo $i

9 //简写的操作符+=,用来给变量i加1。

5 $ i=3 //变量i被赋值为5。

6 $ (( i+=4))

$ echo $i

7 //双括号可以用来代替let命令。变量i的值加4。

7 $ (( i=i-2 ))

$ echo $i

5 // i的值减2。也可以写作i-=2。

1)两个小括号内允许空格

2)let、expr的区别:expr是个函数表达式必须加空格(不加空格会语法错误)、let是一个命令;二者都不能进行位运算;expr可以直接显示出来、let还需加echo语句才可以显示出来

第二步:使用命令替换,通过位置变量的方式来实现一个平方的操作

#!/bin/bash //脚本的第一行#!/bin/bash 告诉内核将由哪个shell 解释器来执行程序中的各行。本例中是由bash解释器执行。//

# Scriptname: do_square //写脚本一定要按照规范化的写作方式,注明脚本名// 1 function square { //或者把function删除在square后加(),square后与

{}之间加空格

local sq # sq is local to the function //local可以用man来查看,local sq可以不要

let "sq=$1 * $1"

echo "Number to be squared is $1." //定义函数square。被调用时,它的功能是计算出参数(即$1)的平方(即参数自乘)。//

2 echo "The result is $sq "

} //显示将该数平方(自乘)后所得的结果。//

3 echo "Give me a number to square. "

read number //要求用户输入一个整数。程序从这一行开始执行。// 4 value_returned=$(square $number) # Command substitution //用(用户输入的)一个数作为参数来调用函数square。因为函数被括在由$符引导的括号之间,所以shell执行命令替换。函数的输出,即两条echo语句的输出,被赋值给变量value_returned。value_returned=$()可以去掉,只留下square $number//

5 echo "$value_returned" //显示命令替换后返回的值。可以删去//

(命令行与输出)

sh do_square

3 Give me a number to square.

10

5 Number to be squared is 10.

The result is 100

1)大括号

第三步:通过脚本实现替换

1 #!/bin/bash //脚本的第一行#!/bin/bash 告诉内核将由哪个shell解释器来执行程序中的各行。本例中是由bash解释器执行。//

2 # This is the first Bash shell program of the day.

# Scriptname: greetings

# Written by: Barbara Bashful //注释以#号开头,不被执行。注释可以独立成行,也可以紧跟在命令的后面。//

3 echo "Hello $LOGNAME, it's nice talking to you." // shell完成变量替换后,echo命令在屏幕上显示字符串。//

4 echo "Your present working directory is `pwd`." // shell完成命令替换后,echo命令将在屏幕上显示字符串。//

echo "You are working on a machine called `uname -n`." //uname –n为打印网络节点主机名// echo "Here is a list of your files."

5 ls # List files in the present working directory //执行ls命令。#号后的所有文本都是注释,将被shell忽略。//

6 echo "Bye for now $LOGNAME. The time is `date +%T`!" // echo命令显示双引号中的字符串。放在双引号中的变量和命令将被展开和替换,因此,这里引号不是必须的。date 后面要加空格,可以改变成date +%Y/%m/%d,大写的Y显示的是2008,小写的y显示的是08//

第四步:位置变量的设定及使用

$*和$@扩展的结果几乎完全一样,唯一不同的是当它们被括在双引号中时,$*的值是一个字符串,而$@的值则是一组相互独立的词。

# !/bin/bash

# Scriptname: args

# Script to test command-line arguments

1 echo The name of this script is $0 //脚本的名称保存在变量$0中。//

2 echo The arguments are $* //$*代表所有的位置参量。//

3 echo The first argument is $1 //$1代表第1个位置参量(命令行参数)。//

4 echo The second argument is $2 //$2代表第2个位置参量。//

相关文档
最新文档