首页 > 系统相关 >Shell脚本编程(二)

Shell脚本编程(二)

时间:2024-07-26 16:26:44浏览次数:23  
标签:脚本 Shell 变量 编程 echo 实例 操作符 字符串

目录

一、Shell程序中使用变量

1、变量赋值

2、访问变量值

3、键盘输入变量值

4、实例1

5、实例2

二、表达式的比较

1、字符串比较

1.1、实例1

1.2、实例2

2、数字比较

2.1、实例1

3、逻辑操作

3.1、实例1

4、文件操作

4.1、实例1

4.2、实例2


一、Shell程序中使用变量

1、变量赋值

        Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,其格式为:

变量名=值

注意:等号(=)前后没有空格

        例如:

        x=6

        a="How are you"

表示把6赋值给变量x,字符串"How are you"赋值给变量a。

2、访问变量值

        如果需要访问变量值,可以在变量前面加一个美元符号"$",例如:

        一个变量给另一个变量赋值可以写作:

        变量2=$变量1

        例如:x=$i

        i++可以写作:i=$i+1

3、键盘输入变量值

        Shell程序设计中变量的值可以作为字符串从键盘读入,格式为:

read 变量

        例如:

         read为读入命令,它从键盘读入字符串到str。

4、实例1

        编写一个Shell程序test3,功能是从键盘读入一个目录名,然后显示这个目录下所有文件的信息。

        分析:存放目录的变量为DIRECTORY,其读入语句为:

read DIRECTORY

        显示文件的信息命令为:ls -a

#! /bin/bash

echo "Please input name of directory"
read DIRECTORY
cd $DIRECTORY
ls -l

         程序执行结果为:

5、实例2

        编写一个Shell程序test4,从键盘读入x、y的值,然后做加法运算,最后输出结果。

#! /bin/bash

echo "Please input x y"
read x y
z=`expr $x + $y`
echo "The sum of x and y is: $z"

        执行结果如下:

注意:表达式 `expr $x + $y`中的符号“`”是键盘左上角的“ ` ” 键。

二、表达式的比较

        Shell程序中,通常使用表达式比较来完成逻辑任务。表达式所代表的操作符有字符操作符数字操作符逻辑操作符以及文件操作符。其中文件操作符是一种Shell所独特的操作符。因为Shell中的变量都是字符串,为了达到对文件进行操作的目的,遇上才提供了文件操作符。

1、字符串比较

        作用:测试字符串是否相等、长度是否为零,字符串是否为NULL。

        常用的字符串操作符有:

字符串操作符含义及返回值
=比较两个字符串是否相同,相同则为“真”
!=比较两个字符串是否不同,不同则为“真”
-n比较两个字符串长度是否大于零,若大于零则为“真”
-z比较两个字符串长度是否相等,若相等则为“真”

1.1、实例1

        编写一个Shell程序test5,功能是从键盘输入两个字符串,判断这两个字符串是否相等,如相等输出。

#! /bin/bash

echo "Please input ar1"
read ar1
echo "Please input ar2"
read ar2
[ "$ar1" = "$ar2" ]
echo $?

        执行结果如下:

注意:"[" 后面和"]"前面及等号"="的前后都应有一个空格,这里是程序的退出情况,如果ar1和ar2的字符串不相等,则程序非正常退出,输出结果为1。 

1.2、实例2

        编写一个Shell程序,功能是比较字符串的长度是否大于零。

#! /bin/bash

echo "Please input ar"
read ar
[ -n "$ar" ]
echo $?

         执行结果如下:

注意:运行结果为1表示ar的长度小于等于零,0表示ar的长度大于零。

2、数字比较

        在Shell编程中的关系运算有别于其它编程语言,用test语句和下表中的运算符表示大小的比较。

运算符号含          义
-eq相等
-ge大于等于
-le小于等于
-ne不等于
-gt大于
-lt小于

2.1、实例1

        编写一个Shell程序test7,功能是比较两个数字是否相等。

#! /bin/bash

echo "Please input x and y"
read x y
if test $x -eq $y then
    echo "$x = $y"
else
    echo "$x != $y"
fi

        执行结果如下:

3、逻辑操作

        Shell程序设计中的逻辑运算符如表所示。

运算符号含     义
反:与一个逻辑值相反的逻辑值
-a与(and):两个逻辑值为“是”返回值为“是”,反之为“否”
-o或(or):两个逻辑值有一个为“是”,返回值为“是”

3.1、实例1

        编写一个Shell程序test8,功能是给两个字符变量赋值,一个变量赋予一定的值,另一个为空,求两者的与、或操作。

#! /bin/bash

part1="1111"
part2=""
[ "$part1" -a "$part2" ]
echo $?
[ "$part1" -o "$part2" ]
echo $?

        执行结果如下:

4、文件操作

        文件测试操作表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于test关于文件的操作符有很多,下表只列出一些常用的操作符。

运算符号含      义
-d对象存在且为目录,返回值为“是”
-f对象存在且为文件,返回值为“是”
-L对象存在且为符号,返回值为“是”
-r对象存在且可读,返回值为“是”
-s对象存在且长度非零,返回值为“是”
-w对象存在且可写,返回值为“是”
-x对象存在且可执行,返回值为“是”

4.1、实例1

        编写一个Shell程序test9,功能是判断/mnt/d目录是否存在于/root下。

#! /bin/bash

[ -d /root/mnt/d ]
echo $?

        执行结果如下:

        如果判断的目录存在,则 

#! /bin/bash

[ -d /mnt/d ]
echo $?

        执行结果如下:

注意:运行结果是返回参数"$?",目录存在,返回值为0;不存在,返回1。

4.2、实例2

        编写一个Shell程序test10,功能是输入一个字符串,如果是目录,则显示目录下的信息,如果是文件则显示文件内容。

#! /bin/bash

echo "Please input the directory name or file name"
read DORF
if [ -d $DORF ]
then
    ls $DORF
elif [-f $DORF]
then
    cat $DORF
else
    echo "input error!"
fi

        如果输入的是目录,执行结果为:

        如果输入的是文件名,执行结果为:

标签:脚本,Shell,变量,编程,echo,实例,操作符,字符串
From: https://blog.csdn.net/L_peanut/article/details/140716163

相关文章

  • shell脚本编程
    一、shell基础1、shell概念shell英文翻译过来是外壳的意思,作为计算机语言来理解可以认为它是操作系统的外壳。可以通过shell命令来操作和控制操作系统,比如Linux中的shell命令就包括ls、cd、pwd等等。shell在内核的基础上编写的一个应用程序,它连接了用户和Linux内......
  • 模块3 面向对象编程高级 --- 第八章:实现继承
    第八章实现继承主要知识点1、继承的概念2、继承的实现3、用this和super关键字实现继承4、抽象类的实现学习目标掌握继承和抽象类的定义和实现方法。借助集成,可以扩展原有的代码,应用到其他程序中,而不必要重新编写这些代码。扩展声明的新类称为子类,原有......
  • sqlserver --日常使用脚本
    ----------------------------------------------------------------------------------------------------------Description:sqlserver常用脚本:--------------------------------------------------------------------------------------------------------SELECTT.text,P.q......
  • 运行 Spark-Shell 程序时出现错误
    我正在尝试创建SparkShell程序,但在运行时出现错误。下面是我正在执行的代码。frompyspark.sqlimport*frompysparkimportSparkConffromlib.loggerimportLog4j#conf=SparkConf()#conf.set("spark.executor.extraJavaOptions","-Dlog4j.configuration=f......
  • windows bat脚本睡眠等待
    方法1:使用timeout命令在指定的时间内等待命令提示符或批处理脚本。时间以秒为单位定义。例如等待5秒钟使用。使用/T选项:c:/>timeout/T5您还可以直接指定秒,例如:c:/>timeout5上面的命令将在按任意键时中断超时过程。您可以使用/NOBREAK忽略按键并等待指定的时间。......
  • 为什么我的 Python 脚本失败并出现 TypeError?
    我正在编写一个Python脚本,该脚本应该计算数字列表的总和。但是,当我运行代码时遇到TypeError这是一个最小的例子:numbers=[1,2,3,'4']total=sum(numbers)print(total)Theerrormessageis:TypeError:unsupportedoperandtype(s)for+:'int'and'str......
  • Python 中的面向对象编程
    一.介绍在本文中,我们将使用Python中的类和对象来探索基本的OOP概念。面向对象编程(OOP)是一种强大的方法,可帮助开发人员组织代码,使其易于理解、重用和维护。Python是一种灵活的语言,可以很好地支持OOP概念。1.类和对象类是创建对象的蓝图。它定义了该类的对象将......
  • 免费分享一套微信小程序投票评选系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本
    大家好,我是java1234_小锋老师,看到一个不错的微信小程序投票评选系统(SpringBoot后端+Vue管理端),分享下哈。项目视频演示【免费】微信小程序投票评选系统(SpringBoot后端+Vue管理端)Java毕业设计_哔哩哔哩_bilibili项目介绍社会发展日新月异,用计算机应用实现数据管理功能......
  • 电脑脚本通杀器,能破市面上百分之80的脚本
    1.引言自动化脚本在现代软件开发和测试中扮演着重要角色。万能脚本通杀器作为一款电脑脚本自动化工具,旨在简化用户操作,提高工作效率。2.软件功能多功能性:能够执行多种类型的脚本任务,满足不同场景下的需求。易操作性:提供详细的操作教程,帮助用户快速上手。3.产品包含详......
  • 计算机毕业设计django+vueblockly少儿编程在线学习网站【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化教育日益普及的今天,少儿编程教育作为培养学生逻辑思维、创造力和解决问题能力的重要手段,正受到越来越多的关注和重视。然而,传统的......