shell 脚本中的变量

1. 变量的定义

  • 定义本身
    变量就是内存一片区域的地址
  • 变量存在的意义
    命令无法操作一直变化的目标
    用一串固定的字符来表示不固定的目标可以解决此问题

2. shell 脚本中变量的定义方法

  1. 环境级别
    ‘export a=1’
    在环境关闭后变量失效

编辑一个脚本,用来输出变量 westos 的值;
当我们在用 source 来调用脚本时可以看到其结果,但是用其他的方式来调用脚本时不会有输出的值,因为只有 source 在调用脚本时不会开启一个新的 shell ,所以就只有 source 在调用时可以有变量值的输出;

此时可以对变量做声明,输入 export westos=1,此时再用除了 source 之外的命令调用脚本时即可看到有输出;

在这里插入图片描述

  1. 用户级别
    ‘vim ~/.bash_profile’
    ‘export a=1’

以上的声明方式是临时的,当此 shell 关闭再开启时,或者打开另外一个 shell 时,变量的声明都不会生效;

在这里插入图片描述
可以通过对配置文件的更改,为当前用户做变量的定义;
编辑配置文件 vim ~/.bash_profile,编辑内容如下图所示: export westos=1;

在这里插入图片描述
在这里插入图片描述

编辑完成之后,此时在切换环境时便不会出现不能识别的现象;

在这里插入图片描述
上面对于用户级别的设置,只对当前用户生效,在切换用户后就会出现不能识别的问题;如下图所示:

在这里插入图片描述

  1. 系统级别
  • ‘vim /etc/profile’
    ‘export a=2’
  • ‘vim /etc/profile.d/westos.sh’
    ‘export b=3’

为了解决切换用户之后不能识别的问题,此时可以对系统级别的配置文件进行修改;系统文件的更改有两个方法,一个是对于主配置文件 /etc/profile 的修改,一个是在 etc/profile.d/中写一个文件;由于主配置文件比较复杂,一般的设置都是在 etc/profile.d/目录中新写入一个文件。

输入命令 vim /etc/profile.d/zxk.sh,写入的文件内容如图所示:

在这里插入图片描述

当文件写好之后再次切换用户来观察效果。

在这里插入图片描述
对于系统级别的环境变量设定的查看,可以用命令 env 来进行查看。

在这里插入图片描述

3. 变量名称

  1. 变量名称可包含的字符
    字母
    下划线_
    数字

  2. 变量名称定义规则
    不能用数字开头

在这里插入图片描述

建议:
变量名称全用大写字符,当变量名称比较长时变量名称常用类_子类来表示;
WESTOS
Westos_Linux
westiS_Linux

4. 变量的转译

  1. 转译
  • \ ##转移单个字符
  • “ ” ##弱引用,批量转译个数字符,不能转译 “ \“、 “ ` "、 " $ "、 " ! "
  • ’ ’ ##强引用

当在给变量声明时,如果是几个字符串,中间的空格是识别不了的,此时就需要转译,单个字符的转译用 \,但是当有多个字符需要转译时,此时的 \ 转译就比较麻烦;

在这里插入图片描述

对于多个字符的转译可以用到 “ ” 和 ’ ’ ,效果如图所示:

在这里插入图片描述

而 ’ ’ 是强引用, “ ” 是弱引用,若引用对于一些特殊的字符不能转译 ,如 : $ 、`、 !、\ 都不能转译;

在这里插入图片描述
虽然若引用对于一些特定的字符不能转译,但是正因为此对于特殊的要求的转译还是需要若引用,如图所示:

在这里插入图片描述

  1. 声明
    a=1
    echo $ab
    echo ${a}b

对于 a 做变量声明,a 是变量,b 不是变量。
在这里插入图片描述

  1. 变量的数组
    a=(1 2 3 4 5)
    a$[a[@]:起始元素 id : 元素个数]
    echo ${a[0]} ##数组中第一个元素
    echo ${a[-1]} ##数组中最后一个元素
    echo ${a[*]} ##数组中所有元素,所有元素是一个整体
    echo ${a[@]} ##数组中所有元素,每个元素是个体
    echo ${a[@]:0:3} ##数组中1-3个元素
    echo ${#a[@]} ##数组中元素的个数

在这里插入图片描述

unset a[n] ##删除数组中的第n-1个元素
unset a ##删除a 这个数组

在这里插入图片描述

5. Linux 中命令的别名设定

  1. 临时设定
    alias xie=‘vim’

如图当临时设定完成后,便可输入命令 alias 来查看系统中的别名;

在这里插入图片描述

  1. 用户级别
    vim ~/.bashrc
    alias xie=‘vim’ ##只针对此用户生效

编辑配置文件 ~/.bashrc 来设定用户级别的别名;设置如图所示:

在这里插入图片描述

此设定为用户级别的设定,当切换用户时,别名便不再生效;

在这里插入图片描述

  1. 系统级别
    vim /etc/bashrc ##针对系统的所有用户生效
    alias xie=‘vim’

编辑配置文件 /etc/bashrc,写入的内容如图所示:

在这里插入图片描述

此时切换用户时,别名也可以识别。

在这里插入图片描述

  1. 删除
    unalias xie ##删除当前环境中的alias

在删除别名时,如果只是删除配置文件中的内容,此时并不能生效,需要用命令来卸载当前环境列表中的别名;

在这里插入图片描述

6. 用户环境变量的更改

  1. 临时设定
    PATH=abcd
    一般不做设定,会使系统的环境错乱。

  2. 用户级别
    ~/.bash_profile
    export PATH=$PATH:/mnt,在原始的环境变量的基础上在加一个 /mnt.

对配置文件的更改如图所示:

在这里插入图片描述
可以看到,更改配置文件之后,在原始环境变量的基础上加上了 /mnt ,而切换用户之后,便设别不到更改的信息;

在这里插入图片描述

  1. 系统级别
    /etc/bash_profile
    export PATH=$PATH:/mnt,在原始的环境变量的基础上在加一个 /mnt.
  • 直接利用命令执行结果
    $()|`` ##优先执行

TEST=‘hostname` 等同于TEST=$(hostname)

在这里插入图片描述

  • 脚本中的参数

非交互模式:没有回应直接给出结果

如写一个脚本内容如图所示:

在这里插入图片描述

在执行脚本时如图所示:

其中
$0 is zxk.sh <脚本本身>
$1 is linux <脚本后所输入的第一串字符>
$2 is haha <脚本后所输入的第二串字符>
$3 is 123 <脚本后所输入的第三串字符>
$# is 3 <脚本后所输入的所有字符串个数>
$* is linux haha 123 <脚本后所输入的所有字符 “linux haha 123”>
$@ is linux haha 123 <脚本后所输入的所有字符 ‘linux’ ‘haha’ ‘123’>

在这里插入图片描述

交互模式传参:有回应
read WESTOS ##对westos赋值
read -p “please inout word:” ##输出提示语

编辑一个脚本如图所示:

在这里插入图片描述
此时在调用脚本时的效果如图所示:

在这里插入图片描述
写一个脚本的内容如图所示: -s 表示没有回显的显示;第二行表示换行;

在这里插入图片描述
执行之后的结果如图所示:

在这里插入图片描述

7. 脚本函数

定义:程序的别名

设定方式:
WORD()
{
action1
action2
}

如图可以用函数的方式将用来显示颜色的脚本信息放入到判断用户是否存在的脚本中去;

在这里插入图片描述
执行之后的结果如图所示:

在这里插入图片描述

也可以利用函数来让脚本一直运行;编辑脚本内容如下所示:

在这里插入图片描述
运行脚本的结果如图所示,只有当输入的值为 exit 时,才会退出脚本的运行,否则会一致运行下去。

在这里插入图片描述

TEST

  1. 写一个脚本名为 ctrl_user.sh 的脚本,用来创建和删除用户。
    1)当脚本后面内容为空时,提示: Useage: $0 create | delete !!
    2)当脚本后所跟内容为 create 时,提示:Please input username;当所输入的用户存在时提示:用户存在;当用户不存在时,提示:Please input password: 无回显,此时用户会被建立,并且会设定其密码为输入的密码;
    3)当脚本后所跟内容为 delete 时,提示:Please input username;当所输入的用户存在时,执行删除动作,并提示用户已经被删除;当用户不存在时,提示:用户不存在;

编写脚本内容如下图所示:

在这里插入图片描述

运行脚本测试结果如下:

在这里插入图片描述
在这里插入图片描述

  1. 编写一个脚本, check_file 用函数的方式判断文件的类型

编辑脚本的信息如图所示,用函数的形式可以简化脚本的书写过程;

在这里插入图片描述

测试结果如下图所示:

在这里插入图片描述

  1. 写一个脚本名称为 create_user.sh 的脚本,用来创建用户。
    1)当脚本运行时,提示: Please input username: ,
    2)当输入的用户存在时提示用户存在;并且让其再次输入用户名称,直至输入的用户不存在时,提示: Please input password : ,密码为无回显的输入;此时不存在的用户会自动建立,并且密码为提示后设定的密码;并显示:用户已经创建;
    3)再次提示 : Please input username:,直至输入为 exit 时才退出脚本。

编辑脚本如图所示:

在这里插入图片描述
测试结果如图所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值