Bash 变量

2022-10-11 16:03 更新

变量的定义

  • 变量是一个容器,用于临时存储数据(整数、浮点数、字符串等类任意类型的数据)
  • 变量名可包含字母,数字,下划线,并且只能以字母和下划线开头。

Bash 变量声明

  1. 语法:
    1. Variable_name=value
  2. Bash 变量的定义规则:
    • 变量名区分大小写,aA为两个不同的变量。
    • 变量名可以使用大小写字母混编的形式进行编写。
    • 变量名与值之间的=两侧都不能有空格。
    • 在读取或打印变量时,需使用$+变量名。
    • 变量可以写在Bash脚本中的任何地方,在运行时,Bash会自动将其替换为变量值。

Bash 数据类型

在 Bash 中声明变量后赋值,它会自动判断数据类型,不必在声明的同时去定义变量的数据类型。 如果您将数字值赋值给变量,它将会自动转换为整数工作;如果您将字符串赋值给该变量,那么它将会转换为字符串类型。

Bash 变量类型

Bash 变量有两种类型:

1. 系统定义的变量 由 Linux 操作系统本身创建和维护的预定义变量。它们的命名标准通常是以大写字母对变量进行命名。

  • BASH 表示 Shell 名称,示例:
    1. BASH=/user/bin/bash
  • BASH_VERSION 指定 Bash 持有的 shell 版本,示例:
    1. BASH_VERSION=4.2.46(2)
  • COLUMNS 指定编号,屏幕的列数,示例:
    1. COLUMNS=80
  • HOME 为用户指定主目录,示例:
    1. HOME=/home/W3Cschool
  • LOGNAME 指定日志记录用户名,示例:
    1. LOGNAME=W3Cschool

    若要了解更多的系统定义变量,您可以在终端输入命令set,env,printenv以获取这些变量的列表。

2. 用户定义的变量 由用户自行创建和维护的变量。这些类型的变量多数以小写字母参与命名,但不具有大小写强制性规定。

  1. #!/bin/bash
  2. say=Hello user
  3. Comment=welcome to W3Cschool
  4. echo "$say,$Comment!"

执行结果:

  1. Hello user,welcome to W3Cschool!

Bash 变量使用

我们通常对 Bash 中的变量执行两个操作:

  • 为变量赋值
    1. comment=Welcome to W3Cschool
  • 读取变量的值
    1. comment=Welcome to W3Cschool
    2. echo $comment

注意:如果通过单引号将变量或字符串进行任意拼接组合,那么将无法成功读取它们。

命令行参数

命令行参数通过将数据输入传递给代码功能块,使脚本更具动态性,如下示例:

  1. ./bash_script.sh parameter1 parameter2...

注:脚本名称与所有传递的参数之间不能存在空格,本处使用空格便于阅读。

如何使用命令行参数

在 Bash 中,命令行参数与以下默认参数或特殊变量的引用一同使用。

  • $0 ——指定要调用的脚本名称。
  • $1-9 ——存储前9个自变量的名称,或可用作自变量的位置。
  • $# ——指定传递给脚本的参数总数。
  • $* ——将所有命令行参数连接在一起来存储它们。
  • $@ ——将参数列表存储为数组。
  • $? ——指定最后一个命令或最近执行过程的推出状态。
  • $$ ——指定当前脚本的进程 ID 。
  • $! ——显示最后一个后台作业的 ID 。

传递命令行参数的两种方法:

  1. 使用位置编号 使用默认参数($1-9)来访问命令行参数。
    1. #!/bin/bash
    2. echo $0 '> echo $0'
    3. echo $1 $2 $3 $4 $5 $6 $7 $8 $9'> echo $1 $2 $3 $4 $5 $6 $7 $8 $9'

    执行结果:

    1. $ chmod +x bash_script.sh
    2. $ ./bash_script.sh Here is the W3Cschool
    3. ./bash_script.sh > echo $0
    4. Here is the W3Cschool >echo $1 $2 $3 $4 $5 $6 $7 $8 $9

  1. 使用数组 将参数作为数组传递,按照给定的算法来应用此方法。
    • 声明变量名,将值分配为$@
      1. variable_name=("$@"
      2. ```)
    • 通过指定数组索引来显示参数的值。
      1. ${variable_name[i]}
    • 保存脚本,并通过传递参数来执行脚本。
      1. #!/bin/bash
      2. parameter=("$@")
      3. echo ${parameter[0]} ${parameter[1]} ${parameter[2]}

命令替换

在 Bash 中,命令替换允许命令的输出替换命令本身。 命令替换是指Bash执行的扩展,它获取Bash命令的输出,存储在一个变量中并显示回显。 命令替换在脚本和变量分配方面增强了数据的灵活性。

语法:

  • 将命令替换为变量(命令替换的经典形式)是使用反引号,如下示例:
    1. variable_name=`command_name`
    2. variable_name=`command_name [option...] argument1 argument2...`
    3. variable_name=`/path/to/command`
  • $开头,将命令放在圆括号内进行命令替换,如下示例:
    1. variable_name=$(command_name)
    2. variable_name=$(command_name [option...] argument1 argument2...)
    3. variable_name=$(path/to/command)

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号