shell变量

本文详细介绍了Shell中的系统预定义变量如HOME、PWD等,以及如何查看和操作。接着讲解了自定义变量的定义、撤销和声明,包括变量命名规则和类型。通过实例演示了变量的赋值、修改和保护。还涵盖了特殊变量如 $#、$* 和 $@ 的用法,以及如何使用export将变量提升为全局环境。
摘要由CSDN通过智能技术生成

3.1 系统预定义变量
1)常用系统变量 H O M E 、 HOME、 HOMEPWD、 S H E L L 、 SHELL、 SHELLUSER 等 2)
案例实操 (1)查看系统变量的值
[atguigu@hadoop101 shells]$ echo H O M E / h o m e / a t g u i g u ( 2 ) 显 示 当 前 S h e l l 中 所 有 变 量 : s e t [ a t g u i g u @ h a d o o p 101 s h e l l s ] HOME /home/atguigu (2)显示当前 Shell 中所有变量: set [atguigu@hadoop101 shells] HOME/home/atguigu2Shellset[atguigu@hadoop101shells] set BASH=/bin/bash BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() 3.2 自定义变量 1)
基本语法 (1)定义变量:变量名=变量值,注意,=号前后不能有空格
(2)撤销变量:unset 变量名
(3)声明静态变量:readonly 变量,注意:不能 unset 2)
变量定义规则
(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建 议大写。
(2)等号两侧不能有空格
(3)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4)变量的值如果有空格,需要使用双引号或单引号括起来。
3)案例实操
(1)定义变量 A

  [atguigu@hadoop101 shells]$ A=5
  [atguigu@hadoop101 shells]$ echo $A 5 

(2)给变量 A 重新赋值

    [atguigu@hadoop101 shells]$ A=8 
    [atguigu@hadoop101 shells]$ echo $A 8 
(3)撤销变量 A [atguigu@hadoop101 shells]$ unset A 
    [atguigu@hadoop101 shells]$ echo $A 

(4)声明静态的变量 B=2,不能 unset

     [atguigu@hadoop101 shells]$ readonly B=2 
     [atguigu@hadoop101 shells]$ echo $B 2
     [atguigu@hadoop101 shells]$ B=9 -bash: B: readonly variable 

(5)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算

    [atguigu@hadoop102 ~]$ C=1+2 
    [atguigu@hadoop102 ~]$ echo $C 1+2

(6)变量的值如果有空格,需要使用双引号或单引号括起来

[atguigu@hadoop102 ~]$ D=I love banzhang -bash: world: command not found [atguigu@hadoop102 ~]$ D="I love banzhang" [atguigu@hadoop102 ~]$ echo $D I love banzhang

(7)可把变量提升为全局环境变量,可供其他 Shell 程序使用 export 变量名

      [atguigu@hadoop101 shells]$ vim helloworld.sh 

在 helloworld.sh 文件中增加 echo $B #!/bin/bash echo “helloworld” echo $B

       [atguigu@hadoop101 shells]$ ./helloworld.sh Helloworld 

发现并没有打印输出变量 B 的值。

       [atguigu@hadoop101 shells]$ export B 
       [atguigu@hadoop101 shells]$ ./helloworld.sh helloworld 

23.3 特殊变量 3.3.1 $n 1)
基本语法 $n
(功能描述:n 为数字,$0 代表该脚本名称,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9 代表第一到第九个参数,十以 上的参数,十以上的参数需要用大括号包含,如 9{10})
2)案例实操

        [atguigu@hadoop101 shells]$ touch parameter.sh
        [atguigu@hadoop101 shells]$ vim parameter.sh #!/bin/bash echo '==========$n==========' echo $0 echo $1 echo $2 
        [atguigu@hadoop101 shells]$ chmod 777 parameter.sh
        [atguigu@hadoop101 shells]$ ./parameter.sh cls xz ==========$n========== ./parameter.sh cls xz3.3.2 $# 1

基本语法 $# (功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及 加强脚本的健壮性)。
2)案例实操

    [atguigu@hadoop101 shells]$ vim parameter.sh #!/bin/bash echo '==========$n==========' echo $0 echo $1 echo $2 echo '==========$#==========' echo $#
    [atguigu@hadoop101 shells]$ chmod 777 parameter.sh 
    [atguigu@hadoop101 shells]$ ./parameter.sh cls xz ==========$n========== ./parameter.sh cls

23.3.3
∗ 、 *、 @ 1)基本语法 ∗ ( 功 能 描 述 : 这 个 变 量 代 表 命 令 行 中 所 有 的 参 数 , * (功能描述:这个变量代表命令行中所有的参数, *把所有的参数看成一个整体)
@ ( 功 能 描 述 : 这 个 变 量 也 代 表 命 令 行 中 所 有 的 参 数 , 不 过 @ (功能描述:这个变量也代表命令行中所有的参数,不过 @@把每个参数区分对待)
2)案例实操

  [atguigu@hadoop101 shells]$ vim parameter.sh #!/bin/bash echo '==========$n=========='
   echo $0 
   echo $1 
   echo $2 
   echo '==========$#==========' 
   echo $#
    echo '==========$*==========' 
    echo $* echo '==========$@==========' 
    echo $@ 
    [atguigu@hadoop101 shells]$ ./parameter.sh a b c d e f g 
    ==========$n==========        
    ./parameter.sh ab==========$
    #========== 
    7==========
    $*==========
     a b c d e f g ==========
     $@========== a b c d e f g 3.3.4 $?

1) 基本语法 $? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一 个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确了。)
2)案例实操 判断 helloworld.sh 脚本是否正确执行

   [atguigu@hadoop101 shells]$ ./helloworld.sh hello world [atguigu@hadoop101 shells]$ echo $? 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值