首页 > 系统相关 >Linux基础--Shell命令解释器

Linux基础--Shell命令解释器

时间:2024-07-20 17:55:38浏览次数:10  
标签:字符 Shell 匹配 -- 空格 参数 bash Linux 个字符

Linux提供的Shell解析器

bash和sh的关系

  • sh是bash的一个软链接

注意:Centos默认的Shell解析器是bash

定义bash变量

  • 环境变量名建议大写

  • 等号两侧不能有空格,如果有空格,则需要使用双引号或单引号括起来

  • 定义时不用加$符号,使用时需要加$符号

1是查看现在username,2是删除现在username

定义数组

  • 数组名=("项" "项"):无逗号隔开

set查看所有的变量

set

unset取消变量的设置

unset 变量名

export将局部变量提升为全局

export 变量名

Bash变量引号的使用

  • 没有引号

    对纯字符没有印象

    dog='金毛'或者dog=金毛或者dog="金毛"都可以声明

  • 用单引号:不会解析变量,字符串始终被解释为它本身

  • 用双引号:会解析变量

  • 将命令的结果保存到变量中(避免使用反引号)

变量名=$(命令)

特殊的变量名

  • $n:给脚本传参

$1~$9代表第一到第九个参数,10以上的参数需要使用{},如${10}

demo2.sh是$0的参数(即脚本名),a是$1的参数,a是$1的参数,b是$2的参数

  • $#:获取传参的个数

  • $*:拿到参数的所有数据(看成整体)

  • $@:拿到参数的所有数据(每个参数区分对待)

  • $?:查看上一次命令或者脚本的执行状态的结果是否有问题(0-->正确 非0-->错误)

运算符

$((运算式))或者$[运算式]或者expr +、-、\*、/、%(要有空格)

逻辑运算符

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

  • 两个整数之间比较

  • 按照文件权限进行判断

  • 按照文件类型进行判断

  • 多条件判断

&&表示前一条命令执行成功时,才执行下一条命令

||表示前一条命令执行失败后,才执行下一条命令

1前面是正确的,与"对" 与,输出"对" ;2前面是错误的,与"对" 与,不输出

正则表达式

  • 常规匹配cat /etc/passwd | grep root

  • 特殊字符

    • ^ :会匹配/etc/passwd中以root开头的⾏

    • $:匹配出/etc/passwd中以bash结尾的⾏

    • . : .匹配⼀个任意字符,如下,可以匹配含有四个字符,其中第1个字符是r,第4个字符是t的⾏,中间两个 可以是任意字符

    • *: *不单独使⽤,他和上⼀个字符连⽤,表示匹配上⼀个字符0次或多次,如下,可以匹配第1个字符是r, 最后1个字符是t,中间可以包含任意数量的o

    • 字符区间 []: []表示匹配某个范围内的⼀个字符

    [6,8]匹配6或者8
    [0-9]匹配一个0-9的数字
    [0-9]*匹配任意长度的数字字符串
    [a-z]匹配一个a-z的字符
    [a-z]*匹配任意长度的字母字符串
    [a-ce-f]匹配a-z或者e-f之间的任意一个字符

    例:

    1是在0-9之间;2和3是在0-9之间且后面是数字3或6的;4是a-z之间且后面是数字0-9的

  • 例:找出所有包含‘ $’ 的⾏

  • 特殊字符 \ :匹配某⼀特殊字符本身

条件选择\判断

条件选择if

  • [ 条件判断式 ] :中括号和条件判断式之间必须要有空格

  • if后面要有空格

demo3.sh脚本内容:

结果展示:

条件判断case

注意:行尾必须为单词in ; 双分号";;"表示命令序列结束 ; 最后的*)表示默认格式,相当于java中的default

循环(4种)

for循环

例如:100以内的累加并输出结果

$@最终会被""解析为一个数组每个元素都是传入的参数

$*最终会被""解析为一个连续的字符串只有一个元素

while循环

until 循环

例如:100以内的累加并输出结果

select循环与菜单

例:菜单

 

continue结束本轮循环,进入下一轮循环;break提前结束循环

read读取控制台输入

-p: 指定读取值的时间

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

例:计算输入的是不是一个质数

 

标签:字符,Shell,匹配,--,空格,参数,bash,Linux,个字符
From: https://blog.csdn.net/m0_63016075/article/details/140574759

相关文章

  • Java基础语法01-运算符&流程控制语句If
    Java基础语法1.运算符1.1算术运算符(理解)1.1.1运算符和表达式运算符:对常量或者变量进行操作的符号表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。​不同运算符连接的表达式体现的是不同类型的表达式。举例说明:inta=10;intb=2......
  • Java基础语法02——While循环和Switch
    4.switch语句4.1switch语句结构(掌握)格式switch(表达式){ case1: 语句体1; break; case2: 语句体2; break; ... default: 语句体n+1; break;}执行流程:首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中......
  • dpvs 调整tcp mss
    修改tcpoptions中mss值src/ipvs/ip_vs_proto_tcp.c因为tcp头部options中不同kind顺序是随机的,所以需要遍历找到kind值是mss2和length值是4,再修改后面的mssvalue。staticvoidtcp_out_adjust_mss(intaf,structtcphdr*tcph){unsignedchar*ptr;intlength;......
  • 鸿蒙开发 03 封装 @ohos/axios (最新深度封装)
    鸿蒙开发03封装@ohos/axios(最新深度封装)1、安装@ohos/axios2、开始封装2.1新建utils文件夹和api文件夹2.2在utils文件夹里新建http.ts2.3在api文件夹里新建api.ets3、页面调用4、打印结果1、安装@ohos/axiosohpminstall@ohos/axiosTips:按......
  • thinkphp数据库配置文件在哪里?怎么修改?
    thinkphp数据库配置文件tp3.2是config.phptp5是database.php<?phpreturnarray('DB_TYPE'=>'mysql',//数据库类型'DB_HOST'=>'127.0.0.1',//数据库服务器地址'DB_NAME'=>'thinkphp',//数据库名称......
  • 学习笔记第六天
    1.循环结构概述 定义:在给定条件成立时,反复执行某程序段; 要素:循环变量初始化语句;            循环的执行条件;      有使循环趋于结束的语句;2.while循环 格式:while(表达式)语句;特点:先判断条件,后执行语句3.do-while循环格式:do语句whi......
  • 管理无线物联网设备和连接的增长
    将项目(或产品)规模化从来不是一件容易的事。然而,随着蜂窝无线物联网的部署,增长挑战尤其令人生畏。为什么?因为如果不增加复杂性,就无法发展无线物联网部署。复杂性随着物联网而扩大,随着每一个新设备、每一个新的运营商协议和你服务的每一个新客户而膨胀。成功扩展物联网的......
  • ACL 2024 | 对25个开闭源模型数学评测,GPT-3.5-Turbo才勉强及格
    大型语言模型(LLMs)在解决问题方面的非凡能力日益显现。最近,一个值得关注的现象是,这些模型在多项数学推理的基准测试中获得了惊人的成绩。以GPT-4为例,在高难度小学应用题测试集GSM8K[1]中表现优异,准确率高达90%以上。同时,许多开源模型也展现出了不俗的实力,准确率超过80%......
  • 帝国CMS网站系统根目录结构介绍
    帝国CMS网站系统根目录结构介绍更新日期:2024-06-2119:41:47来源:网络/系统根目录├d/附件和数据存放目录(data)│├file/附件存放目录│├js/JS调用生成目录│└txt/内容存文本存放目录├e/系统......
  • 帝国CMS的数据库配置文件是哪个?怎样修改数据库配置信息?
    数据库的配置文件路径是:e/class/config.php这里面有一点要特别说明:对于帝国7.0以后的版本,数据库路径就是e/config/config.php713eb8bb4de47619eb43f58eadef3af9_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAcXFfMTU0NzQ3OTkzNA==,size_14,color_FFFFFF,t_7......