shell脚本中的变量

一、变量的定义:

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

二、 shell脚本中变量的定义方法

变量名称可包含的字符;字母、下划线_、数字
变量名称定义规则;不能用数字开头
建议:
变量名称短全用大写字符
变量名称长用_区分子类
WESTOS
Westos_Linux
westoS_Linux

  • 临时设定a为1,并写入脚本
    在这里插入图片描述
    用sh无法运行出脚本内容,用 . 可以运行脚本得到正确结果,因为sh 的运行方式会在当前shell中重新开启了一个子shell ,因此变量的值没有被传递到子shell中,所以无法得到运行结果。
    在这里插入图片描述
    (1)环境级别定义变量
    export a=1
    声明export:让当前shell的所有子程序都可以识别设定的内容,此时sh 可以运行脚本,得到运行结果。
    在这里插入图片描述
    但exit退出当前shell后,重新开启一个shell ,仍然得不到运行结果,这是因为在环境关闭后变量失效;
    即刚才的shell结束后,它在内存中的所有数据都被系统回收了,打开新的shell ,是一个新的内存的地址,所以在寻址时无法得到a的内容
    在这里插入图片描述
    (2)用户级别
    编辑配置文件vim ~/.bash_profile
    export a=1
    在这里插入图片描述
    source 运行~/.bash_profile文件,sh 可以得到脚本运行结果
    在这里插入图片描述
    但切换到westos用户,仍得不到脚本运行结果,因为它读取不到配置文件的内容
    在这里插入图片描述
    (3)系统级别
    切换到 /etc/profile.d 目录
    编辑文件 /etc/profile.d/westos.sh
    在这里插入图片描述
    westos也得用sh 得到脚本运行结果
    在这里插入图片描述
    env 查看内建变量,用于显示系统中已存在的环境变量,可以看到所设定的变量a=1
    在这里插入图片描述
  • 删除设定的变量:
    1、删除系统级别配置目录下的westos.sh文件;
    2、将用户级别配置文件里的设定删除;
    3、unset a:删除变量a
    在这里插入图片描述
    env 查看内建变量,可以看到所设定的变量a=1消失
    在这里插入图片描述
    系统的shell也是变量
    PS1 :设定执行命令的提示符(临时的)
    在这里插入图片描述

三、变量的转译

  • (1)转译
    \ :转译单个字符
    " " :弱引用,批量转译个数字符
    ’ ’ :强引用
  • $$:当前程序的ID
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ” “不能转译 \ 、! 、’ 、 $
    在这里插入图片描述
    (2)声明
    对于 a 做变量声明,a 是变量,b 不是变量。
    在这里插入图片描述
    (3)变量的数组
    echo $a :显示数组中第一个元素;
    echo ${a[0]} :数组中第一个元素
    echo ${a[-1]} :数组中最后一个元素
    echo ${a[*]} :数组中所有元素
    echo ${a[@]}:数组中所有元素
    在这里插入图片描述
    echo ${#a[@]}::数组中元素的个数
    echo ${a[@]:0:3} :数组中第一个到第三个元素;
    echo ${a[@]:5:3} :数组中从第五个元素往后的三个元素;
    echo ${a[@]:3:3} :数组中从第3个元素往后的三个元素;在这里插入图片描述
    unset a[n] :删除数组中的第n个元素;
    unset a :删除a这个数组;
    a[0]=1:对数组的第一个元素进行赋值
    在这里插入图片描述

四、Linux中命令的别名设定

  • ls 和 /bin/ls 两条指令的内容相同,颜色却不同,这是因为ls 其实表示的是/usr/bin/ls这个指令
    在这里插入图片描述
    alias:查看别名
    在这里插入图片描述
    alias xie=‘vim’ :临时设定别名;
    此时执行xie,即可打开一个vim
    在这里插入图片描述
    在这里插入图片描述
    exit退出当前shell,再次进入shell,xie指令没有了
    在这里插入图片描述
    编辑shell的配置文件vim ~/.bashrc
    在这里插入图片描述
    source 运行文件之后,即可看到设定的别名
    在这里插入图片描述
    但切换到westos用户,xie命令找不到
    在这里插入图片描述
    编辑vim /etc/bashrc 文件:针对系统所有用户生效;
    在文件的最后一行写上alias xie=‘vim’
    此时westos也能执行xie指令,打开一个vim
    在这里插入图片描述
    alias可以看到定义的别名
    在这里插入图片描述
    删除当前环境中的alias
    在这里插入图片描述

五、用户环境变量的更改

  • 在Desktop 无法通过文件名直接执行linux.sh脚本文件;
    echo $PATH 显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成
    在这里插入图片描述
    编辑配置文件~/.bash_profile,在原始的环境变量的基础上在加一个 /mnt;
    source 运行文件之后,即可在Desktop 通过文件名直接执行linux.sh脚本文件
    在这里插入图片描述
    在这里插入图片描述
  • 脚本中的传参
  • 1、非交互模式:
    编辑westos.sh脚本文件;
    $0: 脚本本身
    $1 :脚本后所输入的第一串字符
    $2 :脚本后所输入的第二串字符
    $* :脚本后所输入的所有字符"westos linux redhat"(一串字符)
    $@:脚本后所输入的所有字符’westos’ ‘linux’ ‘redhat’(三串字符)
    $# :脚本后所输入的字符串个数
    在这里插入图片描述
    运行脚本
    在这里插入图片描述
    在这里插入图片描述
    编辑 test.sh 脚本文件,对word进行变量定义;
    sh -x:调试shell脚本 ,-x 可用来跟踪脚本的执行;
    当使用" ¥* “时,可以看到脚本执行了一次在这里插入图片描述
    当使用” ¥@ “时,可以看到脚本执行了三次
    在这里插入图片描述
    编辑test.sh文件,测试ping主机;
    当使用” ¥@ “时,脚本文件后接了两个IP,运行成功在这里插入图片描述
    当使用” ¥* "时,脚本文件后接了两个IP,运行失败,因为此时默认接的是一个字符串
    在这里插入图片描述
    2、交互模式传参:
    read WORD :对WORD赋值
    read p "please input word: " :输出提示语
    s :隐藏输入内容
    在这里插入图片描述
    第二行表示换行,此时输入的WORD值就被隐藏了
    在这里插入图片描述
    脚本函数(程序的别名)
    在这里插入图片描述
    将函数写入函数内部,可以循环调用
    在这里插入图片描述
    加入exit,优化脚本
    在这里插入图片描述
  • 练习脚本
    写一个脚本名为 create-user.sh 的脚本,用来创建和删除用户。
    1、输入一个用户名,当该用户存在时,显示用户存在;
    2、重新输入用户名,当该用户不存在时,提示输入该用户的密码,之后自动建立该用户,并将设定的密码给该用户,最后显示该用户已建立;
    3、当输入exit时,退出此脚本
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值