Linux之Shell快速入门系列<3> | Shell脚本中的变量

Shell脚本中的变量

这篇文章主要介绍了在Shell中变量的使用,本文总结了变量的类型、语法、常见使用形式等内容,并分别给出代码示例,需要的朋友可以参考下


Shell中的变量主要分为一下几种类型:
系统变量
自定义变量
特殊变量

1.系统变量

  1. 常用的系统变量

    $HOME$PWD$SHELL$USER
  2. 操作案例

    1.2.1)使用(echo+变量)查看系统变量的值

    [root@bigdata01 centos-shell]# echo $HOME
    /root
    [root@bigdata01 centos-shell]# echo $PWD
    /opt/data/centos-shell
    [root@bigdata01 centos-shell]# echo $SHELL
    /bin/bash
    [root@bigdata01 centos-shell]# echo $USER
    root

    1.2.2)查询当前Shell中的所有变量(set)
    在这里插入图片描述

2.自定义变量

  1. 基本语法

    (1)定义变量:变量=值 
    (2)撤销变量:unset 变量
    (3)声明静态变量:readonly 变量,注意:不能unset
    
  2. 变量的定义规则

    (1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
    (2)等号两侧不能有空格
    (3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
    (4)变量的值如果有空格,需要使用双引号或单引号括起来。
    
  3. 操作案例
    (1) 定义变量(变量名a=值1)

    [root@bigdata01 centos-shell]# a=12
    [root@bigdata01 centos-shell]# echo $a
    12
    

    (2)给修改变量a的值(变量名a=值2)

    [root@bigdata01 centos-shell]# a=111
    [root@bigdata01 centos-shell]# echo $a
    111
    

    (3)撤销变量(unset 变量名)
    在这里插入图片描述
    (4)静态变量的声明(readonly 变量名=值)

    [root@bigdata01 centos-shell]# readonly b=2
    [root@bigdata01 centos-shell]# echo $b
    2
    [root@bigdata01 centos-shell]# b=15   尝试修改b的值
    -bash: b: readonly variable   (!此处报错,因为静态变量不可以修改)
    

    (5)在bash中变量默认字符型,无法参与数值计算操作
    在这里插入图片描述
    此处输出的并不是1+2的计算结果3,而是输出"1+2"这个字符串

    (6)变量的值如果用空格,用双引号/单引号括起来

    [root@bigdata01 centos-shell]# d=I love Guizhou
    -bash: love: command not found(没有引号时报错,无法将I Love Guizhou 赋值给变量d)
    [root@bigdata01 centos-shell]# d="I Love Guizhou"
    [root@bigdata01 centos-shell]# echo $d
    I Love Guizhou
    

    (7)可以使用export将变量提升为全局变量,这样变量就可以给其他的Shell程序使用
    在helloworld脚本中添加一句echo $d

    [root@bigdata01 centos-shell]# vi helloworld.sh
    #! /bin/bash
    echo "HelloWorld"
    echo $d
    
    • 直接执行脚本,此时并没有将变量d的值输出在这里插入图片描述
    • 将变量d提升为全局变量(export 变量名)
      在这里插入图片描述
      我们想要的结果已经出现,说明了将变量d提升为全局变量后它就可以在Shell脚本中使用了

3.特殊变量

这里主要记录5个特殊的shell变量

$n	$#	$*	$@	$?
  1. 特殊变量:$n
    1.1 基本语法

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

    1.2 案例操作
    (1)输出脚本的文件名称、输入参数1和输入参数2 的值
    注意:在执行脚本时 在脚本路径后面输入两个参数

    [root@bigdata01 centos-shell]# touch guizhou.sh
    [root@bigdata01 centos-shell]# vi guizhou.sh
    #! /bin/bash
    echo "I come from Guizhou"
    echo $0 $1 $2
    [root@bigdata01 centos-shell]# chmod +x guizhou.sh
    [root@bigdata01 centos-shell]# ./guizhou.sh Guiyang Huaxi
    I come from Guizhou
    ./sum.sh Guiyang Huaxi
    
  2. 特殊变量:$#
    2.1 基本语法

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

    2.2 案例操作
    (1) 获取输入参数的个数

    [root@bigdata01 centos-shell]# vi sum.sh
    #! /bin/bash
    echo "I come from Guizhou"
    echo $#
    [root@bigdata01 centos-shell]# ./sum.sh Guiyang Huaxi
    I come from Guizhou
    2
    
  3. 特殊变量:$*和$@
    3.1 基本语法

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

    3.2 案例实操
    (1)打印输入的所有参数

    [root@bigdata01 centos-shell]# vi sum.sh
    #! /bin/bash
    echo "I come from Guizhou"
    echo $#
    echo $*
    echo $@
    
    [root@bigdata01 centos-shell]# ./sum.sh Guiyang Huaxi
    I come from Guizhou
    2
    Guiyang Huaxi
    Guiyang Huaxi
    
    
  4. 特殊变量:$?
    4.1 基本语法

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

    4.2 案例操作
    (1)判断sum.sh脚本是否正确执行

    [root@bigdata01 centos-shell]# ./sum.sh Guiyang Huaxi
    I come from Guizhou
    2
    Guiyang Huaxi
    Guiyang Huaxi
    [root@bigdata01 centos-shell]# echo $?
    0
    

    输出0表示sum.sh正确执行,如果输出的是非零,则表示sum.sh执行过程中出错了



Shell的变量就写下这些比较常用的部分,希望我们都可以在自己的专业上大步向前走,扎实掌握我们的专业知识,让自己的未来绽放光芒!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

似懂非dong

你的肯定使我加倍努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值