Shell的正确使用

news2024/11/14 14:01:57

目录

shell 介绍

变量名的定义规则

变量名定义:

删除变量

特殊的变量名:

算术运算符

逻辑运算符:

(1)整数之间比较

(2)按照文件权限进行判断

(3)按照文件类型判断

(4)多条件判断

常用的特殊字符:

条件选择、判断

if判断

条件判断:case

循环:

for:

while

until循环:

select 循环与菜单

read读取控制台输入

自定义函数:

练习题:


shell 介绍


Shell 一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。
Shell还是一个功能强大的编程语言,易编写、易调试、灵活性强。

Linux提供的Shell解析器有:

Centos 默认的Shell解释器是bash

命令:echo $SHELL

变量名的定义规则

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写

(2)等号两侧不能有空格

(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

(4)变量的值如果有空格,需要使用双引号或单引号括起来

变量名定义:

定义变量:username=”小明” 

查看变量内容:echo $username

删除变量

:unset username

查看全部变量:set

正确定义数组:arr=(“熊大” ”熊二” ”光头强” ”蹦蹦”)(两个元素之间不能使用逗号,需要使用空格来分割数组中的每个元素)

根据下表拿数组元素:echo ${arr[1]}

                                  echo ${arr[2]}

拿取所有元素:echo ${arr[*]}

将局部环境变量提升为全局:假如先编写一个demo1.sh文件,里面定义echo $username

通过sh demo1.sh查看为空白内容

然后在外面编写一个username=小丫丫,当我们定义export username时,发现当我们查看sh demo1.sh时,输出小丫丫

这时,就是局部变量提升为全局变量

正确选择引号(单引号和双引号的区别):

定义:dog=金毛 echo $dog 输出结果为:金毛

dog=金毛 echo $dog 输出结果为:金毛

dog=金毛 echo $dog 输出结果为:金毛

定义:

yy=’$dog 是一只小狗’  echo $yy 输出结果:$dog 是一只小狗

yy=”$dog 是一只小狗”  echo $yy 输出结果:金毛 是一只小狗

避免在命令中使用反引号

在bash中,可以将命令的结果保存到变量中,有两种可能:

file_list=`ls`

或者

file_list=$(ls)

特殊的变量名:

$n(功能描述:n为数字,$0代表该脚本名称,$1-$9代表第⼀到第九个参数,⼗以上的参数需要⽤⼤括号包含,如${10}) 

$# (功能描述:获取所有输⼊参数个数,常⽤于循环)。

$* (功能描述:这个变量代表命令⾏中所有的参数,$*把所有的参数看成⼀个整体)

$@ (功能描述:这个变量也代表命令⾏中所有的参数,不过$@把每个参数区分对待)

$?(功能描述:最后⼀次执⾏的命令的返回状态。如果这个变量的值为0,证明上⼀个命令正 确执⾏;如果这个变量的值为⾮0(具体是哪个数,由命令⾃⼰来决定),则证明上⼀个命令执⾏不正确了。)

算术运算符

(1)“$((运算式))”或“$[运算式]”

(2)expr + , - , \*, /, % 加,减,乘,除,取余

注意:expr运算符间要有空格

逻辑运算符:

格式:[条件] 注意:[]里面前后必须要有空格

结果:0表示真,非0表示假

(1)整数之间比较

=字符串比较     

-lt小于             -le小于等于     -eq等于

-ge大于等于        -gt大于

-ne不等于

(2)按照文件权限进行判断

-r有读的权限(read)

-w有写的权限(write)

-x有执行的权限(execute)

(3)按照文件类型判断

-f 文件存在并且是一个常规文件

-e 文件存在

-d文件存在并是一个目录

(4)多条件判断

(&&表示前一条命令执行成功时,才执行后一条命令,||表示上一条命令执行失败后,才执行下一条命令)

常用的特殊字符:

^

^匹配一行的开头,如下,会匹配/etc/passwd中以root开头的行:

cat /etc/passwd | grep ^root

$匹配一行的结尾,如下,会匹配出/etc/passwd中以bash结尾的行:

cat /etc/passwd | grep bash$

.匹配任意字符:

cat /etc/passwd | grep r..t

*不单独使用,和上一个字符连用,表示匹配上一个字符0次或多次,如下,可匹配第一个字符为r,最后一个字符为t,中间可包含任意数量的o:

cat /etc/passwd |grep ro*t

字符区间(中括号)[]

[]表示匹配某个范围内的一个字符,例如

[6,8] 匹配6或8

[0-9] 匹配1个0-9的数字

[0-9]* 匹配任意长度的数字字符串

[a-z]* 匹配任意长度的字母字符串

[a-ce-f] 匹配a-c或者e-f之间的任意一个字符

特殊字符:\

\表示转义,并不会单独使用,当匹配某一特殊字符时,需要将转义字符和特殊字符连用例如:echo “abc$” | grep “\\$”

echo “abc$” | grep ‘\$’

扩展的正则表达式:如{n,m},使用grep匹配的时候,需要添加-E选项,否则无法识别这种语法:echo “ab,cdre” | grep “[a-z] {2,3}”

echo “ab,cdre” | grep -E “[a-z] {2,3}”

条件选择、判断

if判断

用法格式:if 判断条件 1 ; then

条件为真的分支代码

          elif 判断条件 2 ; then

   条件为真的分支代码

  else

以上条件都为假的分支代码

  Fi

例子:

条件判断:case

用法格式:

case $name in

PART1)

cmd

;;

PART2)

cmd

;;

*)

cmd

;;

esac

case行尾必须为单词”in” ,每一个模式匹配必须以右括号”)“结束。

双分号”;;“表示命令序列结束,相当于break  最后的*)表示默认模式,相当于default

循环:

for:

while

用法格式:while 循环控制条件 ;do

循环

    done

until循环:

用法:

until 循环条件 ;do

循环

done

进入条件:循环条件为true;退出条件:循环条件为false;刚好和while相反,所以不常用

select 循环与菜单

用法:

select variable in list

do

循环命令

done

1、select循环主要用于创建菜单,按数字顺序排列的菜单项显示在标准错误上,并显示PS3提示符,等待用户输入

  1. 用户输入菜单列表中的某个数字,执行相应的命令

3、 用户输入被保存在内置变量 REPLY 中

4、select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 按 命令终止脚本。也可以按ctrl+c退出循环

5、 select 和 经常和 case 联合使用

6、与for循环类似,可以省略 in list,此时使用位置参量

read读取控制台输入

read(选项)(参数)

选项:-p:指定读取值时的提示符

-t:指定读取值时等待的时间(秒)

参数:变量:指定读取值的变量名

自定义函数:

练习题:

编写一个函数来计算输入的是不是一个质数

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

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

相关文章

PHP上门按摩专业版防东郊到家系统源码小程序

💆‍♀️【尊享级体验】上门按摩专业版,告别东郊到家,解锁全新放松秘籍!🏠✨ 🔥【开篇安利,告别传统束缚】🔥 亲们,是不是厌倦了忙碌生活中的疲惫感?想要享…

NET 语言识别,语音控制操作、语音播报

System.Speech. 》》System.Speech.Synthesis; 语音播报 》》System.Speech.Recognition 语音识别 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Speech.Recog…

[Redis]典型应用——分布式锁

什么是分布式锁? 在一个分布式系统中,也会涉及到多个节点访问同一个公共资源的情况。此时就需要通过锁来做互斥控制,避免出现类似于"线程安全"的问题 举个例子,在平时抢票时,多个用户可能会同时买票&#…

Linux——多路复用之poll

目录 前言 一、poll的认识 二、poll的接口 三、poll的使用 前言 前面我们学习了多路复用的select,知道多路复用的原理与select的使用方法,但是select也有许多缺点,导致他的效率不算高。今天我们来学习poll的使用,看看poll较于…

利用AI与数据分析优化招聘决策

一、引言 在竞争激烈的职场环境中,招聘是组织获取人才、实现战略目标的关键环节。然而,传统的招聘方式往往依赖人力资源部门的主观经验和直觉,难以准确预测招聘效果,评估招聘渠道的效率。随着人工智能(AI)…

Windows右键新建Markdown文件类型配置 | Typora | VSCode

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 今天毛毛张分享的是如何在右键的新建菜单中添加新建MarkdownFile文件,这是毛毛张分享的关于Typora软件的相关知识的第三期 文章目录 1.前言🏝…

Android车载MCU控制音量和ARM控制音量的区别和优缺点—TEF6686 FM/AM芯片

不要嫌前进的慢,只要一直在前进就好 文章目录 前言一、系统架构图1.MCU控制音量的架构图(老方法)2.ARM控制音量的架构图(新方法) 二、为啥控制音量不是用AudioManager而是执着去直接控制TDA7729?三、MCU控制…

[数据集][目标检测]婴儿车检测数据集VOC+YOLO格式1073张5类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1073 标注数量(xml文件个数):1073 标注数量(txt文件个数):1073 标注…

Matlab基础语法篇(下)

Matlab基础语法(下) 一、逻辑基础(一)逻辑运算符(二)all、any、find函数(三)练习 二、结构基础(一)条件结构(1)if-elseif-else-end&am…

通过albumentation对目标检测进行数据增强(简单直接)

albumentation官方文档看不懂?xml文件不知道如何操作?下面只需要修改部分代码即可上手使用 要使用这个方法之前需要按照albumentation这个库还有一些辅助库,自己看着来安装就行 pip install albumentation pip install opencv-python pip install json…

<数据集>蛋壳裂缝检测数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:2520张 标注数量(xml文件个数):2520 标注数量(txt文件个数):2520 标注类别数:2 标注类别名称:[crack, egg] 序号类别名称图片数框数1crack245128352egg25142514 使…

揭秘饲料制粒机:生产颗粒料加工的利器

随着现代畜牧业的发展,饲料的质量和加工效率成为了养殖业者关注的焦点。在这个背景下,饲料制粒机——这一饲料加工设备的核心,凭借其稳定、环保的特点,逐渐加入养殖行业中。 一、饲料制粒机的工作原理 饲料制粒机主要通过挤压、切…

msyql (8.4,9.0) caching_sha2_password 转换 mysql_native_password用户认证

mysql 前言 caching_sha2_password 主要特性 用于增强用户账户密码的存储和验证安全性。这种插件利用 SHA-256 散列算法的变体来存储和验证密码 安全的密码散列: caching_sha2_password 使用基于 SHA-256 的算法来生成密码的散列值。这意味着即使数据库被未授权访…

【JS特效之手风琴效果】基于jquery实现手风琴网页特效(附源码)

HTMLCSSJS手风琴效果目录 🍔涉及知识🥤写在前面🍧一、网页主题🌳二、网页效果🐋三、网页架构与技术3.1 脑海构思3.2 实现原理 🌈四、网页源码4.1 手风琴模块4.2 完整源码获取方式 🌅 作者寄语 &…

机械学习—零基础学习日志(高数05——函数概念与特性)

零基础为了学人工智能,真的开始复习高数 本小节讲解隐函数,有点神奇,我竟然完全没有隐函数记忆了。 隐函数 隐函数,我个人通俗理解就是,在复杂的环境里,发现纯净天地。例如,在外太空的某个大陆…

《JavaSE》---14.<面向对象系列之(附:this和super关键字)>

目录 系列文章目录 前言 一、为什么要有this引用 1. 用代码看有this与无this的区别 1.1 代码示例 1.2 输出结果: 1.3 代码示例: 1.4 输出结果: 2. this深度理解 3. 什么是this引用 3.1 this引用的概念 4. this引用的特性 二、th…

【TAROT学习日记】韦特体系塔罗牌学习(5)——皇帝 THE EMPEROR IV

韦特体系塔罗牌学习(5)——皇帝 THE EMPEROR IV 目录 韦特体系塔罗牌学习(5)——皇帝 THE EMPEROR IV牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际财富5. 其他象征意 逆位牌意1. 关键词/句2…

大盘周期性复苏之际,英诺赛科的新叙事如何开讲?

半导体行业已经开始周期性复苏。 据同花顺iFinD统计,截至目前,已有37只半导体个股披露了上半年业绩预告,其中27股预喜,或扭亏或预增,预喜率超七成,长川科技净利预增幅度位居第一,暂列上半年半导…

Cadence OrCAD Capture原理图搭建及仿真方法

1 安装Cadence Allegro 略。 2 搭建原理图 2.1 打开软件 1、点击Capture CIS。 2、在弹出的产品选择栏点击OrCAD Capture,点击OK。 打开的软件界面如下: 2.2 新建工程 1、点击左上角File,New,Project,或者直接点…

王权与自由Steam国际服下载教程分享

王权与自由,一款集合了所有mmorpg游戏内玩法的游戏,包含爬塔、小队副本、团队副本、休闲竞技、装备打造、人物养成、攻城战、大型的pvp团战等多种游戏玩法,在游戏中只有我们想不到的内容,没有游戏不包含的内容,而且有意…