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