Linux之Shell进阶(变量和条件判定语句)

news2024/12/24 2:17:53

文章目录

    • 变量
      • 变量的含义
      • 变量的定义与使用(重点)
      • 只读变量
      • 接收用户输入
      • 删除变量
    • 条件判断语句

变量

变量的含义

什么是量?

  • 量就是数据.

什么是变量?

  • 数据可以发生改变就是变量。

在一个脚本周期内,其值可以发生改变的量就是变量。
什么叫做一个脚本周期?

  • 一个脚本周期我们可以简单的理解为当前的shell文件。

变量是shell中不可或缺的一部分,也是最基础、最重要的组成部分。

变量的定义与使用(重点)

变量,先定义后使用。

定义形如:hello=“hello 666”
使用形如:echo $hello

变量就是由2部分组成,一个是变量名(左边),另外一部分是变量的值(右边),类似于Java中变量的定义,只不过Java中的变量还有个变量类型。

变量名和变量值是什么关系??
变量名和变量值是使用和被使用关系; 我们的变量名来使用变量值;
在使用变量的时候一定需要在变量名前面添加一个$符号,该要求在其他语言中也存在的(例如php)。

变量名的规范
注意,变量名后面的等号左右不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线“_”。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。

问题:以下哪个shell变量名是合法的?
A. var B.?var C. user*name D.echo

案例1:使用变量改写入门脚本中的第1个shell脚本。

#!/bin/bash
hello="hello world 666"
echo $hello
[root@localhost aaa]# ./test.sh
hello world 666

关于单双引号的问题:

  • 双引号能够识别变量,双引号能够实现转义(类似于“*”)
  • 单引号是不能识别变量,只会原样输出,单引号是不能转义的

案例2:定义一个变量,输出当前时间,要求格式为“年-月-日 时:分:秒”。

#!/bin/bash
datetime=`date +'%F %T'`
echo $datetime

注意:反引号(esc键下方的那个键),当在脚本中需要执行一些指令并且将执行的结果赋给变量的时候需要使用“反引号”。

只读变量

语法:readonly 变量名
案例:定义变量a并且其值为10,随后设置其为只读变量,再去尝试重新赋值

#!/bin/bash
a=10
readonly a
a=20
echo $a
[root@localhost aaa]# ./test2.sh
./test2.sh: line 4: a: readonly variable
10

接收用户输入

语法:**read -p 提示信息 变量名**
案例:编写一个脚本test6.sh,要求执行之后提示用户输入文件的名称(路径),然后自动为用户创建该文件

#!/bin/bash
read -p '请输入需要创建的文件路径'  filepath
touch $filepath
echo '文件创建成功,路径为:'$filepath

在这里插入图片描述

删除变量

语法:unset 变量名
案例:定义变量b=20,再输出b的值,随后删除b,最后再输出下b

#!/bin/bash
b=10
echo $b
unset b
echo $b

在这里插入图片描述

条件判断语句

老婆给当程序员的老公打电话:下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。当晚,程序员老公手捧一个包子进了家门…老婆怒道:你怎么就买了一个包子?!老公答曰:因为看到了卖西瓜的。
把程序员老婆的话当作一段需求分析一下吧。买一斤包子是一个确定无疑的需求项,无论后面是什么情况什么条件,前面这一斤包子是肯定要买的。看到卖西瓜的是一个条件判断,后面“买一个”是一个模糊不清的需求项,买一个什么呢?需求里没说啊。客户把这个当作开发人员默认了解的内容了。可是作为一个成熟合格的程序员,该老婆的丈夫应该马上跟进确认需求“买一个什么?”,要不然程序可怎么写呢?所以笑话里该程序员是不合格的,起码是不积极不负责的。在没有明确需求的情况下,他只能按照自己的理解来完成工作了。那比较可能的结果就有如下几种:

  1. 看到卖西瓜的,买一个西瓜
    如果看到卖西瓜的
    那么
    买一个西瓜
    否则
    买一斤包子
  2. 看到卖西瓜的,买一个包子
    如果看到卖西瓜的
    那么
    买一个包子
  3. 看到卖西瓜的,买一个卖西瓜的
  4. 看到卖西瓜的,买一个老婆一直想买的东西
  5. 看到卖西瓜的,随便买一个东西

上述1和2下面的条件汉字描述称之为“伪代码”,也是属于条件表达式的语法。

语法1(一个条件):
if condition
then
command1
command2

fi

单行写法(一般在命令行中执行的时候):if [ condition ]; then command; fi

语法2(两个条件):
if condition
then
command1
command2

else
command
fi

语法3(多个条件):
if condition1
then
command1
elif condition2
**then **
command2
else
commandN
fi

相关文章:Linux之Shell基础入门

本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位指出。
主页:共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python调用钉钉发送告警消息

zabbix和prometheus都能做监控告警调用企业微信和钉钉。那么问题来了做为一名合格的运维和开发人员,脚本发现故障告警,自动调用发送详细告警内容,这点儿东西得会。 效果图如下: 普通发送方式 import requestsdef dingding_info(…

AR 技术应用与管理解决方案:施工建造、机柜扫描、办公室导航

建筑行业作为人类历史上最重要的产业之一,在数字化转型方面同样也在不断推进。图扑软件结合 AR 技术的应用,为建筑行业带来了更加便捷高效的建筑施工过程管理。 传统的建筑施工管理过程中,由于缺乏信息化手段,往往存在资料不全、…

解决microsoft windows 恶意软件删除工具 占用内存高

1、winR快捷键,输入regedit,按回车键进入注册表编辑器 2、定位到 \HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ 并创建新项MRT 3、 新建DWORD(32)值,命名为DontOffer ThroughWUAU,数值数据为1; 4、以管理员身份运行命令提示符&#x…

vue3的customRef

文章来源:我的博客,欢迎访问,不欢迎攻击,谁攻击谁儿子 customRef 作用:实现一个自定义的ref,并对其依赖项跟踪和更新触发进行显示控制 像是下面的代码一样: <template><div class"lim"><div class"btns"><el-input type"text…

web期末作业(html+css)-中华美食介绍(附带文档)

作品展示 web期末作业-中华美食介绍 首页包含功能&#xff1a; 轮播图&#xff1a;在首页顶部设置一个可自动轮播的图片展示区域&#xff0c;展示多张宣传图片或产品图片&#xff0c;提升页面的视觉效果和吸引力。 鼠标滑过文字变色&#xff1a;为首页的一些关键文字或链接添…

python安装opencv出错 PEP 517

我的 python 版本是 3.6 的&#xff0c;当需要安装 opencv 时&#xff0c;使用pip install opencv-python 命令进行安装时&#xff0c;出现错误&#xff0c;如下所示&#xff1a; Building Custom Rule C:/Users/liqian/AppData/Local/Temp/pip-install-6jpavinn/opencv-pytho…

element 树形表格每次刷新列表保存展开关闭状态

树形表格保存展开关闭状态 编辑数据后&#xff0c;记录用户操作行的展开和关闭 注意&#xff0c;以下列子是默认展开&#xff0c;记录合上的状态 注意 row-key 需要给每行一个key expand-change 点击行的操作 <el-tableref"tableItem"slot"table":data…

Matrix Breakout:2 Morpheus(靶机详细渗透测试过程记录)

nmap -sS -p 80 -oG - 192.168.192.0/24 | grep open 探测网段下开放80端口的主机。 扫描目录 发现该界面 存储型xss 发现file参数貌似可以控制读取文件目标。 尝试利用伪协议读取&#xff0c;文件内容。 解码&#xff0c;分析源代码&#xff1a; <?php$file"graff…

如何制作EDM电子邮件营销模板

敲黑板&#xff01;宝子们&#xff0c;关于如何制作EDM邮件营销模板的重点介绍来啦~EDM邮件营销模板是现代社会中非常重要的一种电子邮件营销方式。通过精美的EDM邮件营销模板&#xff0c;可以吸引更多的用户注意和关注&#xff0c;进而提高销售量和用户体验。那么&#xff0c;…

以赛兴产 曙光支持首届全国先进计算技术创新大赛

7月11日&#xff0c;首届全国先进计算技术创新大赛启动会在四川达州成功召开。中科曙光作为大赛支持单位应邀出席&#xff0c;并就以赛兴产、加速算力走向普适普惠的深耕实践做专题分享。 本次大赛由中国信息通信研究院、四川省经济和信息化厅、达州市人民政府共同主办&#xf…

【优选算法题练习】day5

文章目录 一、904. 水果成篮1.题目简介2.解题思路3.代码4.运行结果 二、438. 找到字符串中所有字母异位词1.题目简介2.解题思路3.代码4.运行结果 三、30. 串联所有单词的子串1.题目简介2.解题思路3.代码4.运行结果 总结 一、904. 水果成篮 1.题目简介 904. 水果成篮 你正在探…

夏日酷暑高温,设备陆续罢工,为什么这款DTU却能久经“烤”验

炎炎夏日&#xff0c;终于迎来周末的东东&#xff0c;想要出门却发现所在地区不断弹出高温预警&#xff0c;刚买来的雪糕因为在桌子上放了1分钟&#xff0c;再打开包装时才发现其已经开始消融&#xff0c;那小雪人精致的面容也如同被太阳炙烤般扭曲变形&#xff0c;并时不时滴下…

CUnit在ARM平台上的离线搭建(让CUnit编译安装成功之后的可执行文件.so变成ARM下的—ARM aarch64)(实用篇)

前言&#xff1a;1 CUint-2.1-3.tar.bz2压缩安装包下载并解压2 进入CUint-2.1-3目录并且通过指令./bootstrap*产生configure *执行文件3 执行./configure*命令4 make编译5 make install 安装 前言&#xff1a; 在X86架构上的Linux操作系统上面进行cmake编译&#xff08;Cyclon…

为你解密免费音频格式转换器软件有哪些

音频格式转换技术是一种将音频文件从一种格式转换为另一种格式的技术。这项技术非常有用&#xff0c;可以帮助我们在不同设备和平台上播放和共享音频文件。现在市场上有许多免费的音频格式转换器软件可供选择&#xff0c;它们提供了方便、快捷的方式来进行音频格式转换。如果你…

MFC 将工具栏的两项中加入空白按钮

先视为普通按钮赋ID ImageList中Add的图为资源视图新建的CBitmap 是个空图 SetButtonText对应的按钮文本也为空格 然后m_toolbar.GetToolBarCtrl().EnableButton(ID_BUTTONS, FALSE);将对应的按钮禁用即可 ID_BUTTONS是第一个按钮的ID值 UINT nArray[21]; for (int i 0; i &l…

burpSuitPro破解安装教程

1、在解压后&#xff0c;如第一次使用BP请先运行 激活脚本 2、启动激活程序后点击 Run &#xff0c;运行Burp 然后将 License 里面的值复制到 Burp的 key 输入框里&#xff0c;点击 Next &#xff1a; 3、接下来我们要选择使用手动激活 点击 Manual activation 4、将如下输入…

Centos和redhat桥接模式下固定第二个ip地址为可查

这里我们以centos为例子&#xff0c;redhat与其同理 第一步&#xff1a;进入到镜像network-scripts/目录下 cd /etc/sysconfig/network-scripts 第二步&#xff1a; 输入ls查看自己启用的网卡名字并进行编辑&#xff0c;一般centos默认使用的网卡是idcfg-ens33 第三步&…

simulink 实现51单片机流水灯 及代码形式优化

目录 流水灯 代码形式 流水灯 需求&#xff1a;先左移 再右移 自己的 代码形式 2021a版本

pd虚拟机 Parallels Desktop ,让你能够在Mac电脑上同时运行Windows和macOS,简直太棒了!

最近我发现了一款软件——Parallels Desktop&#xff0c;它让我能够在Mac电脑上同时运行Windows和macOS&#xff0c;简直太棒了&#xff01;我想向大家推荐这款软件&#xff0c;因为它为我的工作和生活带来了巨大的便利和乐趣。 永久访问 https://www.hereitis.cn/soft/Paralle…

Linux开发工具【git】

Linux开发工具【git】 git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。也是林纳斯托瓦兹(Linus Torvalds)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件&#xff0c;git 的诞生&#xff0c;让我们可以对代…