1. 系统变量

(1)常用系统变量
$HOME、$PWD、$SHELL、$USER等
(2)案例实操
1)查看系统变量的值

  1. [root@localhost local]# echo $HOME
  2. /root
  3. [root@localhost local]# echo $PWD
  4. /usr/local
  5. [root@localhost local]# echo $SHELL
  6. /bin/bash
  7. [root@localhost local]# echo $USER
  8. root

2)显示当前 Shell 中所有变量:set

  1. [root@localhost ~]# set
  2. # 内容太多就不展示命令执行后的结果了

2. 自定义变量

(1)基本语法

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

(2)变量定义规则

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

(3)案例实操
1)定义变量A

  1. [root@localhost ~]# A=1
  2. [root@localhost ~]# echo $A
  3. 1

2)给变量A重新赋值

  1. [root@localhost ~]# A=5
  2. [root@localhost ~]# echo $A
  3. 5

3)撤销变量A

  1. [root@localhost ~]# unset A
  2. [root@localhost ~]# echo $A
  3. [root@localhost ~]#

4)声明静态的变量B

  1. [root@localhost ~]# readonly B=2
  2. [root@localhost ~]# echo $B
  3. 2
  4. [root@localhost ~]# unset B
  5. -bash: unset: B: cannot unset: readonly variable

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

  1. [root@localhost ~]# C=3+4
  2. [root@localhost ~]# echo $C
  3. 3+4

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

  1. [root@localhost ~]# D=I love abes
  2. -bash: love: command not found
  3. [root@localhost ~]# D="I love abes"
  4. [root@localhost ~]# echo $D
  5. I love abes

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

export 变量名

  1. [root@localhost ~]# vim hellshell.sh
  2. 输入以下内容:
  3. #!/bin/bash
  4. echo "helloworld"
  5. echo $B
  6. [root@localhost ~]# chmod 777 hellshell.sh
  7. [root@localhost ~]# ./hellshell.sh
  8. helloshell
  9. [root@localhost ~]#
  10. # 发现没有打印变量B的值
  11. # 把变量B提升为全局环境变量
  12. [root@localhost ~]# export B
  13. # 再次执行hellshell.sh脚本
  14. [root@localhost ~]# ./hellshell.sh
  15. helloshell
  16. 2
  17. # 发现打印出来了

3. 特殊变量

3.1 $n

  1. 基本语法

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

  1. 案例实操

输出该脚本文件名称、输入参数1和输入参数2 的值

  1. [root@localhost ~]# vim parameter.sh
  2. #!/bin/bash
  3. echo "$0 $1 $2"
  4. [root@localhost ~]# chmod 777 parameter.sh
  5. [root@localhost ~]# ./parameter.sh 123 abes
  6. ./parameter.sh 123 abes

3.2 $

  1. 基本语法

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

  1. 案例实操 ```shell [root@localhost ~]# vim parameter.sh

    !/bin/bash

echo “$0 $1 $2” echo $#

[root@localhost ~]# ./parameter.sh abes abes ./parameter.sh abes abes 2

  1. <a name="vASrY"></a>
  2. ## 3.3 $*,$@
  3. 1. 基本语法
  4. $* (功能描述:这个变量代表命令行中的所有参数,$*把所有的参数看成一个整体)<br />$@ (功能描述:这个变量代表命令行中的所有参数,不过$@把每个参数区分对待)
  5. 2. 案例实操
  6. 打印所有的参数
  7. ```shell
  8. [root@localhost ~]# vim parameter.sh
  9. #!/bin/bash
  10. echo "$0 $1 $2"
  11. echo $#
  12. echo $*
  13. echo $@
  14. [root@localhost ~]# sh parameter.sh 123 abes 4 5 6
  15. parameter.sh 123 abes
  16. 5
  17. 123 abes 4 5 6
  18. 123 abes 4 5 6

3.4 $?

  1. 基本语法

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

  1. 案例实操

判断 parameter.sh 脚本是否正确执行

  1. [root@localhost ~]# sh parameter.sh 123 abes 4 5 6
  2. parameter.sh 123 abes
  3. 5
  4. 123 abes 4 5 6
  5. 123 abes 4 5 6
  6. [root@localhost ~]# echo $?
  7. 0