大白话讲【3】shell脚本-redhat 9

个人理解shell脚本像积木,每个零件掌握,拼凑成一个整体。

1.Shell脚本长什么样子?正常是以 XXX.sh结尾的文件

 1.1shell简介

     shell介于内核与用户之间,负责命令的解释

 1.2 shell的种类

[root@lili ~]# cat /etc/shells   
/bin/sh             #是bash的一个快捷方式
/bin/bash         #linux默认的shell
/usr/bin/sh
/usr/bin/bash

1.3shell脚本的基本写法

2. Shell脚本怎么执行

2.1标准脚本执行方式(建议)

注意:标准执行脚本必须要有可执行权限

2.1.1 绝对路径执行

2.1.2 相对路径执行

2.2非标准脚本执行方式(不建议)

应用场景: 没有使用脚本权限,想看下脚本执行过程或想看下脚本语法

2.2.1 直接在命令行指定解释器执行

2.2.2 使用source,命令读取脚本文件,执行文件里的代码

引申:

        脚本执行过程  [root@lili ~]# bash -x first.sh

        检查脚本语法  [root@lili ~]# bash -n first.sh

3.shell模块

3.1通配符

       * :匹配0或多个任意字符 大白话就是所有

      [ list ]   :匹配[ list ]中任意单个字符      举例:[冬西南]瓜 可以表示 冬瓜,西瓜,南瓜

      [ a-z ]    : 指定范围内的任意单个字符;表示从a到z的任意一个数

      [ !list ]  : 匹配除[ list ]中任意单个字符 

      {string1,string2,...}  :匹配string1,string2或更多字符串。

      ?:匹配任意单个字符(英文标点下的问号)

            ?可以代表任意单个字符,输入几个?就代表几个任意字符。

                  举例   ?瓜 可以表示 冬瓜,西瓜,南瓜等

                             ??瓜 可以表示 哈密瓜,大西瓜等

3.2bash中的引号

     双引号""  :会把引号的内容当成整体来看待,允许通过¥符号引用其他变量值

     单引号''   : 会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符

     反撇号``  :反撇号和$()一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用。

3.3变量

一句话概括:变量是用来临时保存数据的,改数据是可以变化的数据。

3.3.1什么时候需要定义变量?(两种情况)

  1.如果某个内容需要多次使用,并且在代码中重复出现,那么可以用变量代表该内容。这样在修改内容的时候,仅仅需要修改变量的值。

  2.在代码运作的过程中,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。

3.3.2 变量如何定义?

变量名=变量值

变量名:用来临时保存数据的 ;变量值:就是临时的数据

[root@newhost ~]# A=hello    定义变量A
[root@newhost ~]# echo $A    调用变量A,要给美元
[root@newhost ~]# echo ${A}   还可以这样调用,不管你的姿势多优雅,总之要给钱
[root@newhost ~]# A=world    因为是变量所以可以变,移情别恋是常事
[root@newhost ~]# unset A 不跟你完了,取消变量

变量定义规则

1.变量名区分大小写

2.变量名不能有特殊符号(特别说明:对于有空格的字符串给变量赋值时,要用引号引起来)

[root@newhost ~]# A="hello world"

[root@newhost ~]# A='hello world'
3.变量名不能以数字开头

4.等号两边不能有任何空格

5.变量名尽量做到见名知意

3.3.3变量的定义方式有哪些?

1.基本方式 (直接赋值给一个变量)

--引申   $变量名 和 ${变量名}的区别

          相同点:都可以调用变量

           不同点: ${变量名}  可以只截取变量的一部分,而$变量名不可以

[root@newhost ~]# A=1234567
[root@newhost ~]# echo $A
1234567
[root@newhost ~]# echo ${A:2:4}    表示从A变量中第3个字符开始截取,截取4个字符
3456
[root@newhost ~]#
2.命令执行结果赋值给变量

[root@newhost ~]# B=`date +%F`
[root@newhost ~]# echo $B
2024-08-21
[root@newhost ~]# C=$(uname -r)
[root@newhost ~]# echo $C
5.14.0-70.13.1.el9_0.x86_64

3.交互式定义变量(read)

目的:让用户自己给变量赋值,比较灵活。

语法:read [选项] 变量名

常见选项:

-p        定义提示用户的信息

-n        定义字符数(限制变量值的长度)

-s        不显示用户输入的内容

-t        定义超时时间,默认为秒(限制用户输入变量值的超时时间)


  3.1应用场景
用法1:用户自己定义变量值

[root@newhost ~]# read name
harry                                            
[root@newhost ~]# echo $name
harry
[root@newhost ~]#

优化后写法:提示用户信息

[root@newhost ~]# read -p "Input your name:" name
Input your name:harry
[root@newhost ~]# echo $name
harry
[root@newhost ~]#
  ·进阶-隐藏用户输入内容

[root@newhost ~]# read -sp "Input your password:" pass
Input your password:[root@newhost ~]#
[root@newhost ~]# echo $pass
123
[root@newhost ~]#

  ·进阶-限制用户输入字符数

[root@newhost ~]# read -n 5 -p "Input your name:" name
Input your name:lisio[root@newhost ~]# echo $name
lisio
  ·进阶-限制用户输入变量值的超时时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值