【Linux】实验4 shell脚本

本文提供了一个关于Shell脚本的基础实验,涵盖了创建和执行脚本、变量赋值、常用命令如echo、read和test的使用,以及流程控制语句和函数的概念。实验在RedHatEnterpriseLinux6环境下进行,包括了如if-then-else和while循环的实际应用,并展示了如何将脚本内容封装为函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 实验目的:

1.掌握shell脚本的创建和执行的方法;
2.掌握shell脚本中变量及其赋值的方法;
3.掌握echo、read、test等常用命令;
4.熟悉一些位置变量、#变量、?变量等特殊变量;
5.熟悉流程控制语句的基本格式;
6.了解函数的基本格式。

二. 实验环境:

Red Hat Enterprise Linux 6以上

三. 实验内容:

1.shell脚本的创建和执行;
2.shell脚本中变量及其赋值的方法;
3.echo、read、test等常用命令;
4.一些位置变量、#变量、?变量等特殊变量;
5.流程控制语句的基本格式;
6.函数的基本格式。

四、 实验练习:

1、shell脚本的创建和执行
如无特别说明,本实验所有命令都在root用户的家目录/root目录中操作
(1)编辑脚本前要先创建一个脚本

touch myfile.sh

在这里插入图片描述

编辑脚本内容

vi  myfile.sh

(2)在vi编辑器中输入以下三行内容,然后保存退出。
#!/bin/bash
clear
date
( 注:#!/bin/bash 为第一行必输内容,其他clear和date两个为命令)
至此 创建了一个名为myfile.sh的shell脚本。
在这里插入图片描述

(3)执行shell脚本
运行shell程序可以有三种方法:
1)、采用启动shell的sh命令;

sh  myfile.sh

2)、修改文件的可执行权限,在当前目录下键入./文件名,回车即可;

  chmod  u+x  myfile.sh  (修改文件的可执行权限)
 ./myfile.sh             (执行该脚本)

在这里插入图片描述

3)、修改文件的可执行权限,把当前目录添加到搜索路径中(.bash_profile文件)。在 任意目录下键入文件名回车即可执行该脚本。

#chmod  u+x  myfile.sh  (修改文件的可执行权限)
#vi  .bash_profile (用vi编辑器打开位于用户家目录下的文件 .bash_profile)

在打开的 .bash_profile中,找到
在这里插入图片描述
并在其后添加root用户的家目录:/root,如下图所示:
请添加图片描述
保存退出,执行source命令让配置文件生效

source  .bash_profile

在这里插入图片描述

然后在任意目录下输入脚本名,即可执行

myfile.sh

2、shell脚本中变量及其赋值的方法
(1)#A=test1 (将test1赋给变量A,注意等号两边不能有空格)
(2)#B=‘hello everybody’ (如果将一个包含空格的字符串赋给用户变量,应用单引号将该字符串括起来)
(3)#read C (用read命令从键盘给变量C赋值)
在这里插入图片描述
#testc (输入变量C的内容为“testc”)
将命令执行结果赋给变量
#D= ‘date’
或者 D=$(date) (将命令date的执行结果赋给变量D)
显示变量的值
#echo $A (显示变量A的值)
#echo $B (显示变量B的值;自己查看变量C和D的值)。
在这里插入图片描述

3、echo、read、test等常用命令
(1)echo [选项] [“要显示的信息”或 $变量]
#echo $A (显示变量A的值)
#echo “have a good day” (将信息have a good day显示在屏幕上)
(2)read [选项] 变量名
#read C (用read命令从键盘给变量C赋值)
#testc (输入变量C的内容为“testc”)
#read -p “please input your name:” E (在屏幕上显示提示信息)
(3)测试语句与各种条件语句结合使用。
格式1:
test expression
格式2:
[ expression ]
注意:在test语句中的变量应用双引号将之括起来;在运算符、圆括号及方括号前后需留空格;若下一行继续测试表达式,应加反斜杠。

例:
#test abcd = cdef (格式1:比较两个字符串abcd和cdef是否一样)
#[ abcd = cdef ] (格式2:比较两个字符串abcd和cdef是否一样)
这里注意[ 和 a 之间 有一个空格(f 和 ] 之间也有)
#echo $? (显示测试语句返回的结果值,如果为真返回0,假返回1)
#test 23 -lt 28 (格式1:比较23是否小于26)
#[ 23 -lt 28 ] (格式2:比较23是否小于26)
#echo $? (显示测试语句返回的结果值,如果为真返回0,假返回1)
在这里插入图片描述

4、一些位置变量、#变量、?变量等特殊变量
在shell中有1种特殊的变量,称为位置变量。位置变量用于存放那些传递给命令行上shell程序或shell脚本函数的参数。这些变量是数字0~9,shell将命令行中的参数依次赋给变量1、2、……、9,将命令名赋给变量0。
例如:某个shell程序名为test.sh,执行带3个参数,则shell解释执行时位置变量0的内容为test.sh,位置变量1的内容为参数1,依此类推。
创建一个名为myfile1.sh的脚本,输入内容如下:
#!/bin/bash
echo $1 (显示位置变量1的值,即第一个参数的值)
echo $2 (显示位置变量2的值,即第二个参数的值)
echo $3 (显示位置变量3的值,即第三个参数的值)
保存退出,然后输入以下命令执行
在这里插入图片描述

#sh myfile1.sh a b cd (a为第一个参数的值,b为第二个参数的值,cd为第三个)
执行结果在屏幕上分别显示各个位置变量的值
#a
#b
#cd
在这里插入图片描述

5、流程控制语句的基本格式
Linux中shell脚本流程控制语句包括if、case、for、while、until等。
(1)、使用if-then-else语句创建一个根据输入的分数判断是否及格的shell脚本score.sh
#vi score.sh
然后输入以下信息:
#!/bin/bash
echo -n “please input your score:”
read SCORE
echo “you input score is $SCORE”
if [ $SCORE -ge 60 ]
then
echo “OK! You pass”
else
echo “Sorry! You fail”
fi
保存退出,执行,输入一个分数,得到相对应的输出结果。
(2)、使用while语句创建一个根据输入的数值求累加和(1+2+3+…+n)的shell脚本sum.sh
#vi sum.sh
然后输入以下信息:
#!/bin/bash
echo -n “please input number:”
read NUM
number=0
sum=0
while [ $number -le N U M ] d o e c h o n u m b e r e c h o “ NUM ] do echo number echo “ NUM]doechonumberechonumber”
number=expr $number + 1 (注意这里是反引号,是键盘第二行第一个键)
echo sum
echo “$sum”
sum=expr $sum + $number
done
保存退出,执行,输入一个数字,得到相对应的输出结果。

6、函数的基本格式
将实验第5部分的两个脚本作为函数,建立一个shell脚本 fun.sh
#vi fun.sh
然后输入以下信息:
#!/bin/bash

   Score()                      (定义第一个函数score)
   {
   echo -n “please input number:”
   read NUM
   number=0
   sum=0
   while [ $number -le $NUM ]
   do
   echo number
   echo “$number”
   number=`expr $number + 1`   (注意这里是反引号,是键盘第二行第一个键)
   echo sum
   echo “$sum”
   sum=`expr $sum + $number`
   done
   }
   sum()                 (定义第二个函数sum)
   {
    echo -n “please input your score:”   
    read SCORE
    echo “you input score is $SCORE”
    if [ $SCORE -ge 60 ]
    then
    echo “OK! You pass”
    else
    echo “Sorry! You fail”
    fi
    }

Score             (调用第一个函数)
sum               (调用第二个函数)
Score             (再调用第一个函数)

这里注意你上面函数命名的大小写问题 不然的话会报错
保存退出,执行,分析结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值