实验四 Tutorial4 shell编程 下载本文

内容发布更新时间 : 2024/7/3 3:26:00星期一 下面是文章的全部内容请认真阅读。

Unix/Linux操作系统

Tutorial 4 shell 编程

1 实验简介

本次实验内容主要包括:Shell 变量的定义及其应用,Shell 中的特殊字符, 条件判断结构与循环结构,函数的定义和使用。

2 实验目的

(1)了解 Shell 的作用和主要分类 (2)练习编写简单的 Shell 程序

3 实验步骤

(1)创建一个简单的列目录和日期的shell 脚本并运行。 步骤:

①输入下列命令,创建一个新文件:

$ cat >new_file

②输入下列行:

echo “Your files are” ls

echo “today is”

date 按回车键将光标移到一个新行,按Ctrl+D键保存并退出。 ③检查文件内容,确保它是正确的:

$cat new_file

④运行脚本,输入它的文件名:

$. /new_script 该脚本不运行

⑤输入下列命令,显示文件的权限:

ls –l new _file 权限表明该文件不是可执行。要通过简单调用文件名来运行脚本,必须有权限。

⑥输入下列命令,使new_file变成可执行文件。

chmod a+x new_file

⑦要查看新的权限,输入:

$ls –l 现在拥有文件的读、写和执行权限。

⑧输入新脚本的名字以执行它:

$. /new_file

所有输入到文件的命令都执行,并输出到屏幕上。(也可以用vi创建新文件,用:wq命令退出)

(2)用 Shell 语言编制一 Shell 程序,该程序在用户输入年、月之后,自动打印 数出该年该月的日历。

用 vi times 或 cat> times 命令均可

echo \echo \read year

1

Unix/Linux操作系统

cal $month $year

$ bash times (试试用此命令执行脚本)

(3)命令执行控制符练习 ①命令顺序执行用法:

$ cd ..;pwd;ls

②命令替换符的用法:

$ echo Today is `date ?+%A?`

③条件执行命令用法:用 vi 命令建立两个文件 file1 和 file2,然后执行下列文件, 将文件 file1 复制到 file2,如果成功则删除 file1

$ cp file1 file2 && rm file1

④后台执行命令用法:在后台顺序执行两命令,20 秒后跳出提示信息“Tea is

ready”:

$ ( sleep 20; echo Tea is ready ) &

⑤命令组合符用法:将两命令的输出送到 mydoc,mydoc 的第 1 行是 Report,后面是 file3 的内容:

$ ( echo Report; cat file3 ) > mydoc

(4)元字符的引用

(1)$ echo “* is a wildcard.” #消除*字符的特殊含义

(2)$ echo ?The prompter is “$”? #消除双引号字符的特殊含义 (3)$ echo “Don?t do that!” #消除单引号字符的特殊含义 (4)$ echo “Name ID Age Class” #消除空格符的特殊含义

(5)编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同则显示“Match”,并显示“End of program”,如果不同则显示“End of

program” (先用 vi 或 cat>命令建立脚本) echo -n \echo -n \

if test \echo \fi

echo \

(6)修改上述程序,编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同显示“Match”,不同则显示“Not match”,最后显示“End of program”。<编程提示>请使用if ? then ? else 控制结构。

(7)简单 for 循环(先用 vi 或 cat>命令建立脚本)

for day in Monday Wednesday Friday Sunday do echo $day Done

(8)创建一个shell 脚本,它从用户那里接收5个数,并显示已输入的最大的数。

参考程序: #!/bin/bash

max=0 #z注意不要加入空格

for((count=1 ; count <= 5 ; count = count+1))

2

Unix/Linux操作系统

do

echo -n \if [ $max -lt $value ] then

max=$value fi

done

echo \

四 问题

1、shell 程序的第一行的语句#!/bin/sh 有什么作用?

2、shell 编程里面的循环结构有哪几种,对应的形式是怎样的?

3