一、实验目的:

(1)了解Shell的作用和主要分类

(2)练习编写简单的Shell程序

二、实验准备

(1)了解远程登录的概念,以及远程登录软件putty。

(2)了解Linux shell编程的基本概念。

(3)掌握shell编程的基本步骤。

三、实验过程

(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程序,该程序在用户输入年、月之后,自动打印输出该年该月的日历。

用 vi times  或 cat> times 命令均可

echo "please input the month:" read month

echo "please input the year:"

read year

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 "word1:"

read word1

echo -n "word2:"

 read word2

if test "$word1" = "$word2" then

echo "Match"

fi

echo "End of program."

(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 脚本,该程序能接收用户从键盘输入的100个整数,然后求出其总和、最大值及最小值。

参考程序:

#!/bin/sh

read max

min=$max

sum=$max

i=1

while [$i –lt 100]

do

read  x

sum=`expr $sum + $x`

if [ $max –lt  $x ]

then

max=$x

   fi

   if [ $ x –lt  $min ]

then

min=$x

   fi   

i=`expr $i + 1`

done

2.问题解答

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

    指定你运行脚本的shell类型,是bash,ksh还是其它

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

   第一种:

for var in 单次表

do

命令行

done

第二种:

while 命令或表达式

do

命令表

done

3、shell中test命令常用的表达式有哪些?

   检查文件和比较值

test –n 字符串

test 整数1 –eq 整数2

test  File1 –ef  File2

test –z 字符串

4、什么是退出状态,在shell编程中,退出状态的作用是什么?

   每一条 Shell 命令,不管是 Bash 内置命令(例如 cd、echo),还是外部的  Linux 命令(例如 ls、awk),还是自定义的 Shell 函数,当它退出(运行结束)时,都会返回一个比较小的整数值给调用(使用)它的程序,这就是命令的退出状态(exit statu)。

5、shell编程中,如遇到shell的特殊字符,怎么办?为什么这么做?请列举几个这样的特殊字符。

1、$ 美元符

2、\ 反斜杠

3、` 反引号

4、" 双引号

四、实验总结

(1)Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。这时我们就需要远程登录到Linux服务器来管理维护系统。

Linux 系统中是通过 ssh 服务实现的远程登录功能,默认 ssh 服务端口号为 22。

Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell 等,本文以 Putty 为例来登录远程服务器。

(2)yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐