个性化阅读
专注于IT技术分析

bash使用变量

本文概述

变量是编程的重要组成部分,或者我们可以说它们是编程语言的精神。变量通过字符,数字和字母数字指定内存位置。它们通常在计算机程序中被引用和操纵。

有哪些变量?

变量是将数据或有用的信息作为其中的值存储的容器。以下是变量的语法:

Variable_name =value

变量是两个单词的组合形式,即可变能力,这意味着它的值可以更改,并且可以多次使用。

变量被称为任何类型的数据(例如整数,浮点数,字符等)的临时存储。变量名可以包含字母,数字和下划线,并且其名称只能以字母和下划线开头。

注意:我们不能定义以任何数字开头的变量名。

什么是Bash变量?

如果没有适当的信息(语法,数据类型,类型,工作方式),我们将无法使用bash变量,因此,让我们通读本简短教程,以获取有关Bash变量的适当概述。

首先,了解语法。

句法:

Variable_name=value

定义Bash变量的规则集

  1. 在读取或打印变量时,在变量名前加上美元($)符号。
  2. 设置任何值的变量时,请省略美元符号($)。
  3. 变量名可以是字母数字,也可以用下划线(_)书写。
  4. 变量名称区分大小写:x和X被视为两个不同的变量。
  5. 变量名可以使用UPPER_CASE或LOWER_CASE字母或两者的混合形式编写。
  6. 变量可以放在Bash脚本中的任何地方或命令行中,因为在运行时,Bash会将其替换为其分配的值。由于在运行命令之前进行了替换,因此成为可能。
  7. 变量名称及其值之间的等号(=)的两侧都不应有空格。以下是无效变量的一些示例,它们之间具有空格(由点…表示),如下所示:var1 = … variable1 var2 … = variable2 var3 … = … variable3
  8. 不需要使用任何单引号或双引号来定义具有单个字符值的变量,例如var1 = variable。要将多个单词或字符串作为单个项输入到变量中,然后使用引号将内容包含在该变量中。单引号(”)有助于处理每个字符。双引号(“”)有助于进行替换。

资料类型

在正式的编程语言中,必须在变量声明时定义任何变量的数据类型。例如:

int year=2012
char comp_name='jtp'

但是对于Bash,你不必在变量声明时定义任何变量的数据类型。 Bash变量是无类型的,这意味着只需通过分配其值来键入变量名称,它将自动考虑该数据类型。

这样,如果你将任何数字值分配给该变量,它将作为整数工作,如果你将字符值分配给该变量,则它将是字符串。

year=2012
comp_name=jtp

使用echo命令,通过在其名称之前分配$符号来读取它们,例如

echo $ year echo $ name

Bash变量的类型

Shell或任何UNIX系统中都有两种类型的变量。

  1. 系统定义的变量
  2. 用户定义的变量

1.系统定义的变量:这些是由LINUX操作系统本身创建和维护的预定义变量。它们的标准约定是通常以大写字母(即UPPER_CASE)进行定义。因此,每当看到以大写字母定义的变量时,很可能它们就是系统定义的变量。

这些是以下系统定义的变量,如下所示:

1. BASH表示外壳名称。

例:

BASH=/usr/bin/bash

2. BASH_VERSION指定Bash持有的shell版本。

例:

BASH_VERSION=4.2.46(2)

3.列指定编号。屏幕的列数。

例:

COLUMNS=80

4. HOME为用户指定主目录。

例:

HOME=/home/jatpoint

5. LOGNAME指定日志记录用户名。

例:

LOGNAME=srcmini

6. OSTYPE告知OS的类型。

例:

OSTYPE=linux-gnu

7. PWD表示当前工作目录。

例:

PWD=/home/srcmini

8. USERNAME指定当前登录用户的名称。

例:

USERNAME=srcmini

要了解系统中这些变量的列表,请在命令行终端上键入命令set,env和printenv,如下所示:

1.键入set命令。

输出:

2.键入env命令

输出:

3.键入printenv命令

输出:

让我们通过Bash Shell调用这些变量。以下是给定的步骤:

步骤1:创建一个由Bash_sdvar命名的脚本,并在Bash Console上键入以下代码,如下所示:

#! /bin/bash
# Bash System-defined Variables
echo $HOME # Home Directory
echo $PWD # current working directory
echo $BASH # Bash shell name
echo $BASH_VERSION # Bash shell Version
echo $LOGNAME # Name of the Login User
echo $OSTYPE # Type of OS

步骤2.查看下面给出的Bash控制台:

步骤3.保存并执行脚本。它将显示输出,如下图所示。

输出:

2.用户定义的变量:这些变量由用户创建和维护。通常,这些类型的变量在LOWER_CASES中定义。没有任何严格的规则可以将这些变量写为小写。我们也可以将它们写成大写。

让我们创建一个Bash脚本来定义这些变量。请按照以下给定的步骤进行操作:

步骤1.创建一个由Bash_udvar命名的脚本,并在Bash Console上键入以下代码:

#! /bin/bash
# User-Defined Variables 
name=Peter
ROLL_NO=5245325
echo "The student name is $name and his Roll number is $ROLL_NO."

步骤2.在Bash Console上查看代码。

步骤3.保存并执行脚本。

输出:

Bash变量的工作

在对变量进行了基本演示之后,让我们开始了解它们如何工作?

我们通常对Bash中的变量执行两个操作,如下所示:

  • 为变量设置值
  • 读取它的价值。

可以通过不同的方式设置变量值,其中最常见的方法是直接设置值。要读取变量,我们可以在脚本中的任何位置放置其名称(以$符号开头)。

Bash首先检查所有变量名,就像它们在脚本中一样。然后,它将解释脚本的每一行。识别每个变量后,它将用其分配的值替换变量名。毕竟,它解释/运行该行代码,并针对脚本的每个编码行继续执行此过程。

注意:Bash(我们讨论过)中的两种变量都可以在终端以及Bash脚本上使用。让我们通过一个简单的示例了解他们在终端和Bash上的工作:

示例:通过XYZ调用用户名,他当前工作的位置以及他用于Bash脚本的Bash Shell版本。

1.在终端上工作

2.在Bash Shell上工作

请参见下面给出的Bash_Var命名的脚本:

在脚本的第三行,我们声明了一个变量USER_NAME来存储用户名XYZ作为其值。

在最后两行中,我们已经使用echo命令打印了预期的消息。

此消息中有两个变量和一个命令。其中每个符号前面都有美元($)符号,其中:

  • USER_NAME是用户定义的变量,用于调用用户名,
  • BASH_VERSION是系统定义的变量,shell会自行调用。它用于打印Bash Shell的版本,
  • PWD命令用于打印用户的当前位置。

为了更好地理解,请按照给定的代码创建此脚本:

#! /bin/bash
#Bash Variables
USER_NAME=XYZ
echo Hey there! $USER_NAME is any user currently working on the directory $PWD with Bash Shell Version $BASH_VERSION.

它将显示输出,如下图所示:

输出:

在终端和Bash Shell上还有一些练习变量的示例。通过遵循规则集(前面讨论过),对变量进行如下练习:

A.使用命令行终端

1.设置变量

2.读取和引用变量

3.无效的变量

4.结合两个字符串变量

5.用变量连接字符串

注意:不要使用单引号将两个变量组合在一起,也不要将String与变量连接在一起。这样,如果你通过将字符串括在单引号中来串联字符串,那么将无法读取它们,如下面的图像所示:

B.使用Bash脚本:

这是组合String变量的示例。

输出:

命令行参数

命令行参数用于通过将输入传递给代码来使脚本更具动态性。我们在脚本运行时以以下形式传递这些参数:

./script_name arg1 arg2 arg3.....

脚本名称和所有传递的参数之间不应有空格。

如何使用命令行参数?

在Bash Shell中,它们与以下默认参数或特殊变量的引用一起使用。

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

以下是我们用于传递命令行参数的两种方法:

方法1:使用位置编号

这是使用默认参数($ 1 … $ 9)访问参数的第一种方法。下图对此进行了解释:

输出:

方法2:使用数组。

这是将参数作为数组传递的第二种方法。按照给定的算法应用此方法。

第1步:创建一个Bash脚本。

步骤2:声明任何变量名称,并将其值分配为$ a,格式如下:

variable_name=("$@")

其中$ @是默认参数,用于将参数(我们传递)存储为数组。

步骤3:通过以以下形式定义其数组索引来显示参数:

${variable_name[i]}

步骤4:保存并关闭脚本。

步骤5:通过传递参数来执行脚本。

请参阅以下程序:

程序:

#!/bin/bash

args=("$@")

echo ${args[0]} ${args[1]} ${args[2]} ${args[3]}

在Bash控制台上:

输出:

命令替换

根据Bash官方文档

“命令替换允许命令的输出替换命令本身。Bash通过在子外壳环境中执行命令并用命令的标准输出替换命令替换来执行扩展,并删除任何尾随的换行符。已删除,但可能会在拆分单词时将其删除。”

命令替换是指Bash为我们执行的扩展。它获取Bash命令的输出,存储在一个变量中(通常),并显示回显。

Command Substitution在脚本和变量分配方面提供了数据灵活性。具有单个命令行输出非常简单。如果输出经过几行,然后删除新的尾随行,并且输出的全部内容最终在一行上。

请参阅使用语法:

句法

将命令替换为变量或命令替换的经典形式是使用反引号(`…`),如下所示:

variable_name=`command_name`
variable_name=`command_name [option...] argument1 argument2...`
variable_name=`/path/to/command`

现在,通过将命令括在方括号(以美元符号($)开头)中来进行命令替换。看一看:

variable_name=$(command_name)
variable_name=$(command_name [option...] argument1 argument2...)
variable_name=$(path/to/command)

因此,让我们根据讨论通过一个示例进行命令替换。

在此示例中,我们将单个命令ls替换为变量。请参阅终端。

第1行:不使用命令替换,输出将扩展为多行。

第2行和第3行:使用命令替换,输出在一行上结束(通过删除新的尾随行来节省空间)。

以下是Bash脚本来测试命令替换。

程序:

#! /bin/bash

# command substitution

lsResult=$(ls)
echo "My files are:" $lsResult

请参阅Bash控制台:

输出:


赞(0) 打赏
未经允许不得转载:srcmini » bash使用变量
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏