文档库 最新最全的文档下载
当前位置:文档库 › shell编程练习2

shell编程练习2

shell编程练习2
shell编程练习2

1、编写shell脚本程序,实现以下功能:从键盘输入两个整数,分别计算两个数的和以及

乘积,并判断其奇偶性

2、编写shell脚本程序,检测输入的密码它与密码文件123.txt中的密码是否一致,如果一

致则将密码修改为“abcdef”,不一致则提示错误。密码文件内容为password:123456 3、输入字符串,判断字符串代表的目录是否存在,如果不存在则新建该目录;如果存在,

则先显示目录的完整路径,再切换到该目录下,并在该目录下新建文件,将文件属性改为可读可写可执行;如果该字符串代表的文件是普通文件则将“abcdef”追加到文件末尾。

4、编写shell程序计算一组数据的平均值,数据的值作为命令行参数从命令行输入,将计

算结果v1输出,如v1为偶数则将v1和一个在终端定义的全局变量var相加,之后再计算两者的平均值v2输出;如v1为奇数则计算两数相减的值并输出

5、编写shell脚本程序,实现判断当前的日期是上旬、中旬或下旬,输出判断结果,并输

出具体日期

6、编写shell命令集合,用case语句实现以下功能:1)显示当前目录2)在当前目录下创

建一个新的子目录3)打印当前的日历和时间4)统计/etc/services 文件的单词数5)切换到上一级目录下,分别用三种方法运行该脚本程序,比较结果有何不同

############## 1 ############ ############## 2 ############### #!/bin/bash 首先创建密码文件123.txt,在里面写入echo 请输入两个整数:password:123456

read a b #!/bin/bash

Let average=$[$((a+b))/2] echo 请输入密码:

echo 这两个数之和的平均值为:read p

echo $average read a b < 123.txt

If [ $[$average % 2] -eq 0 ] if test $p=$b

then then

echo 这是个偶数!echo 输入的密码正确!请输入新的密码:Else read n

Echo 这是个奇数!Echo $a $n > 123.txt

Fi echo 该文件的内容为:

Let mul=$((a*b)) cat 123.txt

Echo 这两个数相乘的结果是:else

Echo $mul echo 输入的密码错误!

If [ $mul -eq 0 ] fi

then

echo 这是个偶数!

Else

Echo 这是个奇数!

Fi

############ 3 #############

#!/bin/bash

echo 请输入一个字符串:

read s

if test -f $s

then

echo 这是个普通文件,请输入新的内容追加到该文件:

read news

echo $news >> $s

echo 该文件的内容为:

cat $s

elif test -d $s

then

echo 该目录的路径为:

pwd

cd $s

echo 将会新建love.txt文件,并修改其属性为可读可写,可执行:touch love.txt

chmod 777 love.txt

ls -l love.txt

else

echo 此目录不存在,将会新建此目录:

mkdir $s

Fi

################# 4 #############################

#!/bin/bash

echo 请输入五个数:

read a b c d e

let v1=$[$((a+b+c+d+e))/5]

echo "这五个数的平均值是:$v1"

if [ $[$v1 % 2] -eq 0 ]

then

echo 这是个偶数!它和外部变量之和的平均值为:

echo $[$[$v1+$var]/2]

else

echo 这是个奇数!它和外部变量的差为:

expr $v1 - $var

Fi

################# 5 #############################

#!/bin/bash

echo 当前的日期是:

date +%Y-%m-%d

let day=$(date "+%d")

echo $day

if [ $day -ge 0 -a $day -le 10 ]

then

echo 为这个月上旬

elif [ $day -gt 10 -a $day -lt 20 ]

then

echo 为这个月中旬

else

echo 为这个月下旬

fi

################# 6 ############################# #!/bin/bash

echo 有以下功能,请根据需要输入对应的数值:

echo 1:显示当前目录;

echo 2:在当前目录下创建一个新目录new;

echo 3:打印当前日历;

echo 4:统计/etc/services文件的单词数;

echo 5:切换到上一级目录;

echo 请输入:

read n

case $n in

1) pwd;;

2) mkdir new;;

3) cal;date;;

4) wc -w /etc/services;;

5) cd ..;;

esac

Linux下shell程序设计

Linux下的Shell程序设计 Linux下的Shell程序设计 (1) 一.引言 (2) 1.1.编写目的: (2) 1.2定义: (2) 3.参考资料: (3) 二.任务的描述 (3) 2.1.目标: (3) 2.2功能描述: (3) 2.3.运行环境: (3) 2.4.条件与限制: (3) 三.任务设计 (4) 3.1.整体设计: (4) 3.2.详细设计: (5) 3.2.1.Menu模块: (5) 3.2.2. Add模块 (6) 3.2.3 Delete模块 (9) 四.实现过程 (10) 4.1.问题1 (10) 4.2.问题2 (11) 五.程序运行 (11) 5.1.程序运行的过程: (11) 5.1.1.执行效果截图 (11) 5.1.2.输入错误截图 (12) 5.1.3.选择菜单1,运行截图 (12) 5.1.4.选择菜单2,运行截图 (12) 5.1.5选择菜单3,运行截图 (12) 5.1.6 选择菜单5,运行截图 (12) 5.1.7 选择菜单6,运行截图 (13) 5.1.8 选择菜单7,运行截图 (13) 六、感想认识 (13) 七.程序代码 (14) 7.1.Menu模块 (14) 7.2.Add模块 (15) 7.3.Delete模块 (20)

一.引言 1.1.编写目的: 通过本课程设计,使学生巩固Linux和嵌入式系统的的基本概念、原理和技术,学会在Linux 系统下完成Shell程序设计。 1.2定义: 1)grep Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2)sort 将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 3)rm rm 名称源自英文单词remove的缩写,用于删除文件系统中的文件、目录、设备文件、符号链接等对象。准确地说,rm移除的指向特定对象的引用。在文件系统中,这些特定的对象可能有多个引用(例如,两个不同的文件名可能指向相同的文件), 只有在一个对象不再有任何引用,并且没有任何程序还拥有这个文件的有效句柄的时候,这个文件才会被删除。4)cat 显示或者把多个文本文件连接起来。cat是concatenate的简写,类似于dos下面的type 命令。 5)more more命令,功能类似cat。more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字串的功能。more命令从前向后读取文件,因此在启动时就加载整个文件。 6)awk awk是一个数字处理工具。相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个“字段”来处理。运行效率高,而且代码简单,对格式化的文本处理能力超强。awk 是”Aho Weiberger and Kernighan”三个姓的第一个字母缩写。 7)sed sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

实验二 Linux shell程序设计总结

实验二Linux shell程序设计 一、实验目的 熟悉linux shell 简单程序设计 二、实验内容 1、变量引用。在用户主目录下运行如下命令 $dir_1=/11/22 $echo $dir_1 $echo dir_1 2、数组。在用户主目录下运行如下命令 $city[0]=Beijing $city[1]=Shanghai $city[2]=Tianjin 显示city的第二个元素的值 $A=(this is an example of shell script) (1)同时显示数组A的第2、4、6个元素的值。 (2)显示所有数组元素的值 3、完成书上P106-107中关于read命令的使用的例子。 4、完成书上p108-110例4.7-例4.9

三、实验步骤 1.输入命令: $dir_1=/11/22 $echo $dir_1 $echo dir_1 2.输入命令: $city[0]=Beijing $city[1]=Shanghai $city[2]=Tianjin $echo ${city[2]} $A=(this is an example of shell script) $echo ${A[2]} ${A[4]} ${A[6]} $echo ${A[8]} 3.输入命令: $read x y z Today is Monday $echo $z $x $y $read n1 n2 n3 First Second Third 1234 abcd $echo $n3 $echo $n2 $n1

Read n1 n2 n3 1 2 $echo $n3 $echo $n1 $n2 4.4-7:$touch m1.c $vi m1.c 按”i”输入:main() { printf(“Begin\n”); } 按“Esc”输入“:wq” $cat m1.c $touch m2.c $vi m2.c 按”i”输入:main() { printf(“OK!\n”); printf(“End\n”); } 按“Esc”输入“:wq”

LINUX-Shell编程实验报告

《LINUX管理与应用》课程实验报告 ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

一、实验过程 1. 编写一个简单的回显用户名的shell程序 2. 使用if-then语句创建简单的shell程序 3. 使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序 4. 使用for语句创建简单的shell程序 5. 使用while语句创建一个计算1-5的平方的shell程序 6. 用shell设计一个模拟考勤程序 二、实验结果 1.编写一个简单的回显用户名的shell程序 #vi dat #!/bin/bash # echo "Mr.$USER,Today is:" echo `date` echo Wish you a lucky day! #chmod +x dat #./dat 2. 使用if-then语句创建简单的shell程序 #vi bbbb #!/bin/bash # echo -n "Do you want to continue: Y or N" read ANSWER if [ $ANSWER = N -o $ANSWER = n ] then echo "your answer is quit!" fi

#chmod +x bbbb #./bbbb 3. 使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序 #vi ak #!/bin/bash # echo -n "please input a score:" read SCORE echo "You input Score is $SCORE" if [ $SCORE -ge 60 ]; then echo -n "Congratulation!You Pass the examination." else echo -n "Sorry!You Fail the examination!" fi echo -n "press any key to continue!" read $GOOUT #chmod +x ak #./ak 4. 使用for语句创建简单的shell程序 #vi mm #!/bin/bash # for ab in 1 2 3 4 do echo $ab

linux下shell 程序设计_毕业课程设计

linux下shell 程序设计 shell编程 教学要点 1.深入理解shell概念。 2.掌握linux下shell程序设计流程。 3.理解shell程序与C程序设计的区别。 4.掌握shell程序设计中用户变量和表达式的使用方法。一.Shell编程概述 问题1:请各位同学在home目录下创建5个目录,目录名称分别为student0,student1,student2,student3,student4.且修改它们的权限为所有用户都具有完全的操作权限。 问题2:请各位同学在home目录下创建100目录,目录名称为class1—class100. 解决办法:通过一个shell脚本程序来实现,程序如下,用vi编辑器建立一个firstshell文件,内容如下: #!/bin/bash //指明该程序被那个shell来执行!

cd /home/shelldir //进入home/shelldir目录 mkdir newdir //在shelldir目录下新建newdir目录 i=0 //给变量i赋初值 while [ $i –lt 50 ]; do //循环,判断i是否小于50,成立继续循环 let i=i+1 //让i变量值增加1 mkdir /home/shelldir/newdir/student$i //在newdir目录下创建student1到student50 chmod 754 /home/shelldir/newdir/student$i done 保存文件,退出vi,通过执行#chmod a+x firstshell修改文件权限,赋予文件可执行权限,通过#./firstshell或者#/bin/bash firstshell来执行程序,查看程序运行结果。 程序说明: 1.程序必须以下面的行开始(必须方在文件的第一行): #!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/bash来执行程序。

shell程序设计

shell编程 教学要点 1.深入理解shell概念。 2.掌握linux下shell程序设计流程。 3.理解shell程序与C程序设计的区别。 4.掌握shell程序设计中用户变量和表达式的使用方法。一.Shell编程概述 问题1:请各位同学在home目录下创建5个目录,目录名称分别为student0,student1,student2,student3,student4.且修改它们的权限为所有用户都具有完全的操作权限。 问题2:请各位同学在home目录下创建100目录,目录名称为class1—class100. 解决办法:通过一个shell脚本程序来实现,程序如下,用vi编辑器建立一个firstshell文件,内容如下: #!/bin/bash //指明该程序被那个shell来执行! cd /home/shelldir //进入home/shelldir目录 mkdir newdir //在shelldir目录下新建newdir目录

i=0 //给变量i赋初值 while [ $i –lt 50 ]; do //循环,判断i是否小于50,成立继续循环 let i=i+1 //让i变量值增加1 mkdir /home/shelldir/newdir/student$i //在newdir目录下创建student1到student50 chmod 754 /home/shelldir/newdir/student$i done 保存文件,退出vi,通过执行#chmod a+x firstshell修改文件权限,赋予文件可执行权限,通过#./firstshell或者#/bin/bash firstshell来执行程序,查看程序运行结果。 程序说明: 1.程序必须以下面的行开始(必须方在文件的第一行): #!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/bash来执行程序。 2.当编辑好脚本时,如果要执行该脚本,还必须使其可执行。要使脚本可执行,必须为脚本添加可执行权限。

Linux上机练习题shell程序设计基础

上机实习题: 1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。a #!/bin/bash directory=/dev for file in /bin/a2p do if [ -f $file ] then cp $file $directory/$file.bak Fi done 2.编写一个 shell 脚本,完成功能: 1)显示文字“Waiting for a while….” 2)长格式显示当前目录下面的文件和目录,并输出重定向到 /home/file.txt 文件 3)定义一个变量,名为 s,初始值“Hello” 4)使该变量输出重定向到/home/string.txt 文件 m #!/bin/bash echo "waiting for a while… " ls -l.>/home/file.txt s=hello

echo $s > /home/string.txt 3.编写一个 shell 脚本,它把第二个位置参数及其以后的各个参数指定的文 件复制到第一个位置参数指定的目录中。b #!/bin/bash dir=$1 shift while [$1] do file=$1 cp $1 $dir shift done ls $dir 4.编写一个 shell 脚本,利用 for 循环将当前目录下的.c 文件移动到指定 的目录,并按文件大小显示出移动后指定的目录的内容。d #!/bin/bash for file in *.c

{ mv /$file/bin/a } ls -lS /bin/a 5.利用数组形式存放 10 个城市的名字,然后利用 for 循环把它们打印出 来。c #!/bin/bash city=(jinan,qingdao,rizhao,weifang,beijing,shanghai,shenzhen,guangzhou,chongqi ng,nanjing) for i in ${name[*]} do echo $i done 6.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30 个用户,用户名的形式为stdxx,其中xx从01到30。 f !/bin/bash groupadd class1 for ((i=1;i<=30;i++)) do if [ $i -lt 10 ];then username="std0"$i else username="std"$i

实验一Shell程序设计已完成

Shell程序设计 一、实验目的 1、了解和熟悉创建并使用脚本的步骤。 2、熟悉bash的控制结构。 3、学会简单的shell编程。 二、实验内容 1、创建一个简单的列目录和日期的shell 脚本并运行之。 2、用Shell 语言编制Shell 程序,该程序在用户输入年、月之后,自动打印数出该年该月的日历。 3、编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同则显示“Match”,并显示“End of program”,如果不同则显示“End of program”。 4、编程使用case 结构创建一个简单的菜单,屏幕显示菜单: a. Current date and time b. User currently logged in c. Name of the working directory d. Contents of the working directory Enter a,b,c or d: 三、实验步骤 1、创建一个简单的列目录和日期的shell脚本并运行之。 步骤: 键入下列命令,创建一个新文件: (1)cat >new_script (2)输入下列行: echo Your files are ls echo today is date 按回车键将光标移到一个新行,按ctrl + D 键保存并退出。 (3)检查文件内容,确保它是正确的: #cat new_script (4)运行脚本,输入它的文件名: #new_script 该脚本不运行。 (5)输入下列命令,显示文件的权限: #ls -l new_script 权限表明该文件不是可执行。要通过简单调用文件名来运行脚本,必须有权限。 (6)输入下列命令,使new_script变成可执行文件。 chmod +x new_script (7)要查看新的权限,输入: ls-l 现在拥有文件的读、写和执行权限。 (8)输入新脚本的名字以执行它: new_script 所有输入到文件的命令都执行,并输出到屏幕上。

LinuShell程序设计实验

Linux shell程序设计实验指南 请在vi中逐一编辑并执行以下10个shell脚本程序,然后结合所学知识和程序的输出分析各程序中各语句的含义: 1.编写一个简单的回显用户名的shell程序。 #!/bin/bash #filename:date echo "Mr.$USER,Today is:" echo 'date' echo Whish you a lucky day! 2.使用if-then语句创建简单的shell程序。 #!/bin/bash #filename:bbbb echo -n "Do you want to continue: Y or N" read ANSWER if [ $ANSWER=N -o $ANSWER=n ] then exit fi 3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。 #!/bin/bash #filename:ak echo -n "please input a score:" read SCORE echo "You input Score is $SCORE" if [ $SCORE -ge 60 ]; then echo -n "Congratulation!You Pass the examination." else echo -n "Sorry!You Fail the examination!" fi echo -n "press any key to continue!" read $GOOUT 4.使用case语句创建一个菜单选择的shell程序。 #!/bin/bash #filename:za #Display a menu echo _ echo "1 Restore"

7Shell编程

实训项目7 Shell 编程 一、实训目的 ● 掌握Shell 环境变量、管道、输入输出重定向的使用方法。 ● 熟悉Shell 程序设计。 二、项目背景 某单位的系统管理员计划用Shell 编程编写一个程序实现USB 设备的自动挂载。程序的功能如下: ● 运算程序时,提示用户输入“y ”或“n ”,确定是不是挂载USB 设备。 ● 如果用户输入“y ”,则挂载这个USB 设备。 ● 提示用户输入“y ”或“n ”,确定是不是复制文本。 ● 如果用户输入“y ”,则显示文件列表,然后提示用户是否复制文件。 ● 程序根据用户输入的文件名复制相应的文件,然后提示是否将计算机中的文件复制到USB 中。 ● 完成文件的复制以后,提示用户是否卸载USB 设备。 三、实训内容 练习Shell 程序设计方法及Shell 环境变量、管道、输入输出重定向的使用方法。 四、实训步骤 ●在Linux 系统的图形界面下利用Vi 编辑器输入程序代码,部分主要程序代码如下。 ● 将文件保存为/program/usb.sh ,并利用chmod 命令修改usb.sh 的权限,使其可以执行。 ● 设置PATH 环境变量,将/program 目录添加到系统的PATH 环境变量中,使得每次直接执行 usb.sh

就可以完成U盘的自动挂载。 ●去掉usb.sh的执行权限,将改文件的内容分别利用输出重定向输出到/program/usbbak.sh文件和屏幕上。 五、实训思考题 1.将本实训的USB项目的程序完成,并进行实际测试。写出测试环境和测试结果。 2.修改系统的配置文件,使得usb.sh文件在用户每次登陆系统的时候可以自动执行。 六、实训报告要求 ●实训目的。 ●实训内容。 ●实训步骤。 ●实训中的问题和解决方法。 ●回答实训思考题。 ●实训心得与体会。 ●建议与意见。 1

题目1 shell 程序设计

题目1 shell 程序设计 1.1 实验目的 Linux操作系统中shell是用户与系统内核沟通的中介,它为用户使用操作系统的服务提供了一个命令界面。用户在shell提示符($或#)下输入的每一个命令都由shell先解释,然 后传给内核执行。本实验要求用C语言编写一个简单的shell程序,希望达到以下目的: ●用C语言编写清晰易读、设计优良的程序,并附有详细的文档。 ●熟悉使用Linux下的软件开发工具,例如gcc、gdb和make。 ●在编写系统应用程序时熟练使用man帮助手册。 ●学习使用POSIX/UNIX系统调用、对进程进行管理和完成进程之间的通 信,例如使用信号和管道进行进程间通信。 ●理解并发程序中的同步问题。 ●锻炼在团队成员之间的交流与合作能力。 1.2 实验要求 1.2.1 ysh解释程序的重要特征 本实验要实现一个简单的命令解释器,也就是Linux中的shell程序。实验程序起名为ysh,要求其设计类似于目前流行的shell解释程序,如bash、csh、tcsh,但不需要具备那么复杂的功能。ysh程序应当具有如下一些重要的特征: ●能够执行外部程序命令,命令可以带参数。.。 ●能够执行fg、bg、cd、history、exit等内部命令。 ●使用管道和输入输出重定向。 ●支持前后台作业,提供作业控制功能,包括打印作业的清单,改变当前 运行作业的前台/后台状态,以及控制作业的挂起、中止和继续运行。 除此之外,在这个实验中还须做到: ●使用make工具建立工程。 ●使用调试器gdb来调试程序。 ●提供清晰、详细的设计文档和解决方案。 1.2.2 ysh解释程序的具体要求 1. Shell程序形式 本实验的ysh程序设计不包括对配置文件和命令行参数的支持。如果实现为像bash那样支持配置文件,当然很好,但本实验并不要求。ysh应提供一个命令

实验1 Shell程序设计

齐鲁工业大学实验报告成绩 一、实验目的及要求 理解Shell程序的设计方法; 熟悉Shell程序编辑、运行、调试方法与过程。 二、实验过程及结果【相应实验步骤中的主要操作过程、核心源码及运行结果截图】 1.编写一个简单的回显用户名的shell程序 #vi dat #!/bin/bash #filename:dat echo "Mr.$USER,Today is:" echo `date` echo Wish you a lucky day! #chmod +x dat #./dat 2.使用for语句创建简单的shell程序 #vi mm #!/bin/bash #filename:mm for ab in 1 2 3 4 do echo $ab done

#chmod +x mm #./mm 3.使用while语句创建一个计算1-5的平方的shell程序 #vi zx #!/bin/bash #filename:zx int=1 while [ $int -le 5 ] do sq=`expr $int \* $int` echo $sq int=`expr $int + 1` done echo "Job completed" #chmod +x zx #./zx … 三、实验总结及收获【学到的知识和技能、遇到的问题及解决方案、心得体会等】

通过这次实验,我懂得了定义SHELL程序设计中的变量,掌握了SHELL程序中LINUX 基本命令的使用,理解了Shell程序的设计方法,并且熟悉了Shell程序编辑、运行、调试方法与过程。这为我日后继续深入学习Linux课程打下基础。

考勤模拟shell程序设计(推荐文档)

实验报告 课程名称:Linux程序设计 实验项目:考勤模拟shell程序设计专业班级:计算机科学与技术0903 姓名:学号: 实验室号:信息楼实验组号: 实验时间:2012.12.15 批阅时间: 指导教师:李威成绩:

沈阳工业大学实验报告 一.实验名称: 考勤模拟shell程序设计 二.实验目的: 理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。 三.实验内容: 考勤模拟Shell程序设计 用shell设计一个模拟考勤程序,实现如下功能选择界面: 1:上班签到 2:下班签出 3:缺勤信息查阅 考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。 如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。 如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。 如果用户选择确信信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。 用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。

四.实验要求: 1、掌握Shell程序的编辑、运行、调试方法 2、完成实验内容要求是现的功能 3、撰写实验报告 五.试验运行代码: #! /bin/bash exsig=0 while true; do echo "" echo "----欢迎使用本系统----" echo " 1. 上班签到" echo " 2. 下班签出" echo " 3. 考勤信息查询" echo " 4. 退出系统" echo "----------------------" echo "" echo "请输入你的选项:" read choice case $choice in 1)echo "请输入你的名字:" read name echo "请输入你的密码:" read password if test -r /home/user/userinfo.dat then while read fname fpassword do echo "$fname" echo "$fpassword" if test "$fname" = "$name" then break fi done < /home/user/userinfo.dat else echo System Error:userinfo.dat does not exist! fi if test "$fname" != "$name" then

Linux上Shell程序设计实验报告

深圳大学实验报告 课程名称:Linux操作系统 实验项目名称:Linux上shell程序设计 学院:计算机与软件学院 专业:软件工程 指导教师:冯禹洪 报告人:文成学号:2011150259 班级: 2 实验时间:2013-10-08 实验报告提交时间:2013-10-30 教务处制

一、实验目标: 1. 熟悉vi编辑器的使用 2. 掌握简单的Shell编程 2.1. 掌握Shell变量的使用 2.2. 掌握Shell表达式的使用 2.3. 掌握Shell流程控制语句的使用 3. 熟悉Shell程序的执行和跟踪 二、实验环境与工件 湖边Linux实验室 Fedora 13 三、实验内容与步骤 1. 下面哪个命令会实现将变量V AR1和V AR2相加,并且值存入变量V AR3的功能?( D )(5分) [ $V AR3 = $V AR1 + $V AR2 ] $V AR3 = [ $V AR1 + $V AR2 ] $V AR3 = (( V AR1 + V AR2 )) (( V AR3 = V AR1 + V AR2 )) 2. 以下程序的输出是?( D )(5分) #!/usr/bin/sh A=1 while [ $A -lt 10 ] do B=1 while [ $B -lt 10 ] do break 2 echo "Inner loop" done echo "Outer loop" done A.“Inner l oop” 将被打印10次 B.“Outer l oop” 将被打印10次. C.“Outer l oop” 将被打印10次. D.什么都没有被打印.

shell程序设计(通信)1报告

Shell程序设计 本章的学习目标 ●了解shell的地位和作用 ●熟练掌握shell脚本的建立与执行方法 ●掌握shell的变量及特殊字符 ●掌握shell的输入输出命令 ●掌握shell程序逻辑结构语句 主要内容 ● Shell概述 ● Shell的变量 ● Shell中的特殊字符 ●Shell编辑中的输入输出命令 ● Shell结构控制语句 Shell简介 1、Shell的功能(1)作为命令解释程序 (2)作为一种高级程序设计语言 shell是一种命令行解释程序,它提供了用户与操作系统之间基于命令行的交互界面。用户命令行输入命令,由SHELL对它们做出解释,并将其送往操作系统去执行。然而,它不仅仅是一种交互式语言,它还是一种可编程的程序设计语言。将若干个shell命令写入一个文件就构成了一个shell程序,它可以被shell逐条的解释执行。 Shell简介 shell程序可以使用各种变量、参数和控制结构来组织命令流程,自动化的完成各种复杂冗繁的处理工作。 shell是基于字符串的语言:只做字符串处理,不支持复杂的数据结构和运算。Shell 输出也全部是字符方式。 2、Shell的主要版本:sh csh ksh 在linux系统中流行的使用的shell主流是Bash,它是Bourne Again Shell的缩写,bash 是由bourne shell发展而来的,但是它包含了csh和ksh的特性。 shell脚本的建立与执行 ●shell脚本的建立 ●Shell脚本是文本文件,可以用任何文本编辑器建立和编辑脚本,shell脚本文件 的名称没有限定的扩展名,通常不带扩展名或带“.sh”扩展名。 ●①vi shell脚本名 ●②cat >文件名 ●。。。。。 Ctrl+d 例9.1 第1个Shell程序: $ cat hello #hello程序 # This is a shell script to say hello. echo Hello World! echo -n “Today is ” date “+%A, %B %d, %Y.” $ . hello #运行hello程序 Hello World!

实验3:Shell程序设计

实验报告3 课程名称:Linux驱动程序开发实验名称:Shell程序设计 学生姓名:班级:学号: 指导老师:钱振江成绩: 一、实验目的 1.Shell程序设计中变量的使用; 2.理解通道的概念并初步掌握它的使用方法; 3.掌握算术操作、字符串操作、逻辑操作、文件操作; 4.掌握if then fi、if then elif fi、case、while、for等控制语句; 5.在shell脚本中使用函数; 二、实验任务与要求 1.通过对shell程序的调试,理解变量$#,$0,$1,$2,$3,$@的含义; 2.Shell顺序程序设计; 3.Shell分支程序与多分支程序设计; 4.Shell循环程序设计。 三、实验工具与准备 计算机PC机,Linux Ubuntu操作系统 预备知识 1.环境变量:$HOME; $PATH; $PS1; $1~$9; $*; $@; $#; $$; $?; $!等。 $0是一个内部变量,它是必须的,而$1则可有可无,最常用的内部变量有$0、$#、

$?、$*,它们的含义如下: ?$0 :命令所在的路径 ?$# :传递给程序的总的参数数目 ?$? :shell程序在shell中退出的情况,正常退出返回0,反之为非0值 ?$* :传递给程序的所有参数组成的字符串 2.字符串比较有=、!=、-n、-z;算术运算有-eq、-ge、-le、-ne、-gt、-=lt;逻辑运算有!、-a、-o;文件测试-d、-f、-x等; 3.for 循环 ?语法: for 变量in 列表 do 操作 done 4.while循环 ?语法: while 表达式 do 操作 done 5.until循环 ?语法: until 表达式

实验五 Shell程序设计

实验五Shell程序设计 1.编写一个Shell程序findit,该程序搜索参数1指定的目录树,查找所有的以.c和.h结尾的文件,如文件行中含有参数指定的字符串,显示该行和相应的文件名。如目录参数1缺省,则从当前目录中搜索。如:findit /home/wang/work searchstring 搜索以/home/wang/work为根的目录树中的c程序和头文件,查找含有searchstring字符串的行,显示文件名。 findit searchstring 从当前目录开始搜索。 2.编一Shell程序,以类似书本的目录结构的形式,按层次输出当前目录树中的所有目录和文件,要求每一层缩进4个空格。 /* sockcom.h */ #include #include #include #include #include #include #include #include #define BUFSIZE 1024 #define PORT 3333 typedef struct fileinfo { char fname[50]; long length; }FILEINFO, *Pfileinfo; /* * SocketServer.c * */ #include "sockcom.h" int initSocket() { int sockfd, length; struct sockaddr_in server; char buf[BUFSIZE];

Linux上机练习题shell程序设计基础

上机实习题: 1.用编程,判断一文件是不是字符设备文件,如果是将其拷贝到目录下。a 2p [ $ ] $ $$ 2.编写一个脚本,完成功能: 1)显示文字“ a ….” 2)长格式显示 当前目录下面的文件和目录,并输出重定向到文件 3)定义一个变量,名为 s,初始值“” 4)使该变量输出重定向到文件 m " a … " .> $s >

3.编写一个脚本,它把第二个位置参数及其以后的各个参数指定的文件复 制到第一个位置参数指定的目录中。b $1 [$1] $1 $1 $ $ 4.编写一个脚本,利用循环将当前目录下的文件移动到指定的目录,并 按文件大小显示出移动后指定的目录的内容。d * { /$

} 5.利用数组形式存放 10 个城市的名字,然后利用循环把它们打印出来。 c () i ${[*]} $i 6.设计一个程序,添加一个新组为1,然后添加属于这个组的30个用户,用 户名的形式为,其中从01到30。 f 1 ((1<=30)) [ $i 10 ] "0"$i ""$i 1 $

7.编写程序,实现自动删除50个账号的功能。账号名为1至50。 1 [$10] [$10] 0${i} ${i} ' $1' 8.请写出下列程序在命令行执行#3 100 运行后的结果(程序名为3)。 “ $# .” “ :$0” “1 :$1”

“2 :$1” “3 :$3” 9.设计一个菜单驱动程序。如下: : P: S: D: ’s L: W: Q: : 菜单程序将根据用户输入的选择项给出相应信息。要求对用户的输入忽略大小写,对于无效选项的输入给出相应提示。要求使用语句实现以上功能,输入响应的字母后应该执行响应的命令完成每项功能,如输入P,就执行命令。 #! # " :" " 's " " " " " " " "$" D) ;; L) ;; W) ;; Q) 0;;

Linux上Shell程序设计

深圳大学实验报告课程名称:Linux操作系统 实验项目名称:Linux上shell程序设计学院:计算机与软件学院 专业: 指导教师:冯禹洪 报告人:学号:班级: 实验时间: 实验报告提交时间: 教务处制

一、实验目标: 1. 熟悉vi编辑器的使用 2. 掌握简单的Shell编程 2.1. 掌握Shell变量的使用 2.2. 掌握Shell表达式的使用 2.3. 掌握Shell流程控制语句的使用 3. 熟悉Shell程序的执行和跟踪 二、实验环境与工件 湖边Linux实验室 Fedora 13 三、实验内容与步骤: 准备工作:如果当前系统已经有学生名字加学号命名的账号,则直接以该账号登录,然后转2,一次完成后面的实验内容。 i.创建一个以学生名字加学号命名的账号,不如,学生名字 为张山,学号为123,则操作如下: #useradd zhangshan123 #passwd zhangshan123 然后以zhangshan123名字登录 ii.在主目录下 a)创建文件夹:ShellProgram $mkdir ShellProgram b)进入ShellProgram子目录 $cd ShellProgram iii.请根据自己对Linux的熟悉程度选做题(一)或题(二) 题(一) 1. 下面哪个命令会实现将变量V AR1和V AR2相加,并且值存入变量V AR3的功能?()(5分)

A.[ $VAR3 = $VAR1 + $VAR2 ] B.$VAR3 = [ $VAR1 + $VAR2 ] C.$VAR3 = (( VAR1 + VAR2 )) D.(( VAR3 = VAR1 + VAR2 )) 2. 以下程序的输出是?()(5分) #!/usr/bin/sh A=1 while [ $A -lt 10 ] do B=1 while [ $B -lt 10 ] do break 2 echo "Inner loop" done echo "Outer loop" done A.“Inner l oop” 将被打印10次 B.“Outer l oop” 将被打印10次. C.“Outer l oop” 将被打印10次. D.什么都没有被打印. 3. 请在vi中逐一编辑,修正(如果有误)并执行以下10个shell脚本程序,然后结合所学知识和程序的输出理解各程序中各语句的含义,对各小题附上结果截图。(每小题5分) 3.1. 编写一个简单的回显用户名的shell程序。 #!/bin/bash #filename:date echo "Mr.$USER,Today is:" echo 'date' echo Whish you a lucky day! 3.2.使用if-then语句创建简单的shell程序。 #!/bin/bash

《Linux应用程序设计》复习题2

.一、选择题 1.下面哪个命令是用来定义shell的全局变量( D ) A. exportfs B. alias C. exports D. export 2. 将当前目录下的文件shell.sh移动到目录/home/linux下的命令为(B)。 A. cp shell.sh /home/linux B. mv shell.sh /home/linux C. lls shell.sh / home/linux/shell.sh D. mv /root/shell.sh /home/linux/shell.sh 3.如果要列出一个目录下的所有文件需要使用命令行( C )。 A. ls –l B. ls-t C. ls –a D. ls –d 4.Linux 下Makefile文件中,表示第一个依赖目标的系统变量是(C) A.$@ B.$* C.$< D.$# 5.32位系统下,定义一个指向字符类型的变量short i,那么sizeof(i)的值是( B ) A.1 B.2 C.3 D.4 6.在用ls –l 查看文件属性时,字符设备文件类型的标志是( A ) A.c B.b C.s D.l 1、- -------------- 普通文件 2、d -------------- 目录文件 3、l -------------- 符号连接 4、c -------------- 字符设备文件 5、b -------------- 块设备文件 7. 在linux下进行shell编程时,注释符是(A)。 A. # B. // C. /* */ D. 以上都不对 8. 任何时候用户需要回到用户主目录时可以使用命令(A)。 A. cd B. pwd C. path D. cd . 9. 下列属于文件包含的命令是(C)。 A. #define N 25 B. #endif C. #include "stdio.h" D. #else 10. 下列关于Linux安装的说法中,不正确的是(C)。 A.如果计算机的内存为128MB,则SWAP分区(交换分区)的大小通常设定为256M。 B.安装时Linux分区的文件系统类型一般为ext2或ext3。 C.安装时要进行磁盘分区,如果选择“自动分区”,系统会自动保留硬盘上原来的数据。 D.Linux除了可以从光盘安装外,还可以从网上下载Linux的iso映像文件,从硬盘安装。 11. 下列说法中,不正确的是 A 。 A. Shell程序编写完后还需要用gcc编译器编译。

相关文档