Bash教程

Bash 变量

Bash 变量

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

什么是变量?

变量是存储数据或有用信息的容器作为它们内部的价值。以下是变量的语法:
Variable_name =value 
Variable 是两个词的组合形式,即variable+able,表示它的值可以改变,可以多次使用。
Variable被称为临时变量存储任何类型的数据,如整数、浮点数、字符等。变量名可以包括字母、数字和下划线,其名称只能以字母和下划线开头。
注意: 我们不能定义以任何数字开头的变量名。

什么是 Bash 变量?

如果没有正确的信息(语法、数据类型、类型、工作) 关于它,因此,让我们通读这个简短的教程,以便对 Bash 变量进行适当的概述。
首先了解语法。

语法:

Variable_name=value

定义 Bash 变量的规则集:

在读取或打印变量时在变量名前加上美元($) 符号。 在设置具有任何值的变量时不要使用美元符号($)。 变量名可以是字母数字,也可以是下划线(_)。 变量名区分大小写: x 和 X 被视为两个不同的变量。 变量名可以根据需要以 UPPER_CASE 或 LOWER_CASE 字母或两者的混合形式书写。 一个变量可以放置在 Bash 脚本或命令行中的任何地方,因为在运行时,Bash 会将它替换为其分配的值。由于在运行命令之前进行了替换,因此成为可能。 变量名与其值之间的等号(=) 两侧不应有空格。以下是无效变量的一些示例,它们之间有空格(用点...表示),如下所示:
var1=...variable1
var2...=variable2
var3...=...variable3
不需要使用任何单引号或双引号来定义具有单字符值的变量,例如 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.系统定义变量: 这些是由 LINUX 操作系统本身创建和维护的预定义变量。他们的标准约定是通常以大写字母定义,即 UPPER_CASE。因此,每当您看到以大写形式定义的变量时,它们很可能是系统定义的变量。
这些是以下系统定义的变量,如下所示:
1. BASH 代表 Shell 名称。
示例:
BASH=/usr/bin/bash
2. BASH_VERSION 指定 Bash 保存的 shell 版本。
示例:
BASH_VERSION=4.2.46(2)
3. COLUMNS 指定编号。我们屏幕的列数。
示例:
COLUMNS=80
4. HOME 指定用户的主目录。
示例:
HOME=/home/jatpoint
5. LOGNAME 指定记录用户名。
示例:
LOGNAME=lidihuo
6. OSTYPE 告诉操作系统的类型。
示例:
OSTYPE=linux-gnu
7. PWD 代表当前工作目录。
示例:
PWD=/home/lidihuo
8. USERNAME 指定当前登录用户的名称。
示例:
USERNAME=lidihuo
要了解系统中这些变量的列表,请在命令行终端上输入命令set、env和printenv,如下所示:
1.键入 set 命令。
输出:
Bash Variables
2.输入 env 命令
输出:
Bash 变量
3.输入printenv命令
输出:
Bash Variables
让我们通过 Bash Shell 调用这些变量。以下是给定的步骤:
步骤 1: 创建一个名为 Bash_sdvar 的脚本,并在 Bash 控制台上键入以下代码,如下所示:
#! /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 控制台:
Bash Variables
第 3 步。 保存并执行脚本。它将显示如下图所示的输出。
输出:
Bash 变量
2.用户定义的变量: 这些变量由用户创建和维护。通常,这些类型的变量在 LOWER_CASES 中定义。以小写形式编写这些变量没有任何严格的规则。我们也可以将它们写成大写。
让我们创建一个 Bash 脚本来定义这些变量。按照下面给出的步骤进行操作:
步骤 1. 创建一个由 Bash_udvar 命名的脚本,并在 Bash 控制台上键入以下代码:
#! /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 控制台上的代码。
Bash Variables
第 3 步。 保存并执行脚本。
输出:
Bash Variables

Bash 变量的工作

在对变量进行了基本的演示之后,让我们开始了解它们是如何工作的?
我们通常对 Bash 中的变量执行两种操作,如下所示:
为变量设置值 读取价值。
一个变量的值可以有不同的设置方式,其中最常见的方式是直接设置值。要读取变量,我们可以将其名称(以 $ 符号作为前缀)放在脚本中的任何位置。
Bash 首先检查所有变量名,就好像它们存在于脚本中一样。然后它解释我们脚本的每一行。识别每个变量后,它用其分配的值替换变量名称。毕竟,它解释/运行那行代码,并为我们脚本的每一行编码继续这个过程。
注意: 注意: Bash 中的变量种类(我们讨论过)都适用于终端和 Bash 脚本。让我们通过一个简单的例子来看看他们在终端和 Bash 上的工作:
示例: 通过 XYZ 调用用户名、他当前工作的位置以及他使用的 Bash Shell 版本用于 Bash 脚本。

1、在终端上工作

Bash Variables

2.使用 Bash Shell

请参阅下面给出的由 Bash_Var 命名的脚本:
Bash Variables
在脚本的第 3 rd 行,我们声明了一个变量 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 Variables
那里是在终端和 Bash Shell 上练习变量的更多示例。通过遵循规则集(之前讨论过),对变量进行如下练习:
A.使用命令行终端
1.设置变量
Bash Variables
2.读取和引用变量
Bash Variables
3.无效变量
Bash Variables
4.组合两个字符串变量
Bash Variables
5.用变量连接字符串
Bash Variables
注意: 注意: 不要使用单引号来组合两个变量,也不要使用单引号将字符串与变量连接起来。这样,如果您通过将字符串括在单引号中来连接字符串,则无法读取它们,如下图所示:
Bash Variables
B.使用 Bash 脚本:
这是一个组合字符串变量的例子。
Bash Variables
输出:
Bash Variables

命令行参数

命令行参数用于通过将输入传递给代码来使脚本更加动态。我们在脚本运行时以如下形式传递这些参数:
./script_name arg1 arg2 arg3.....
脚本名称和所有传递的参数之间不应有空格。

如何使用命令行参数?

在 Bash Shell 中,它们与以下默认参数或特殊变量的引用一起使用。
$0 指定要调用的脚本的名称。 $1-$9 存储前 9 个参数的名称或可以用作参数的位置。 $# 指定传递给脚本的参数总数(计数)。 $* 通过将所有命令行参数连接在一起来存储它们。 [email protected] 存储列表参数作为数组。 $? 指定当前脚本的进程 ID。 $$ 指定最后一个命令或最近执行进程的退出状态。 $! 显示最后一个后台作业的 ID。
以下是我们用来传递命令行参数的两种方法:
方法一: 使用位置编号
这是使用默认参数($1...$9)访问参数的第一种方式。下图解释了它:
Bash Variables
输出:
Bash Variables
方法二: 使用数组
这是将参数作为数组传递的第二种方式。按照给定的算法应用此方法。
步骤 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 Variables
输出:
Bash Variables

命令替换

根据 Bash 官方说法文档
"命令替换允许命令的输出替换命令本身。Bash通过在子shell环境中执行命令并将命令替换替换为命令的标准输出来执行扩展, 删除任何尾随换行符。嵌入的换行符不会被删除,但它们可能会在分词期间被删除。"
命令替换是指 Bash 为我们执行的扩展。它获取 Bash 命令的输出,存储在一个变量中(通常),然后用 echo 显示回来。
命令替换在脚本和变量分配方面提供了数据灵活性。具有单个命令行输出简单易行。如果输出超过几行,则删除新的尾随行,输出的全部内容最终在一行中。
请参阅使用语法:

语法

在变量或命令替换中替换命令的经典形式是使用反引号(`...`),如下所示:
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 替换为变量。查看终端。
Bash Variables
第 1 行: 没有命令替换,输出扩展为多行。
第 2 行和第 3 行: 使用命令替换,输出在一行结束(通过删除新的尾随行节省空间)。
以下是测试命令替换的 Bash 脚本。

程序:

#! /bin/bash
# command substitution
lsResult=$(ls)
echo "My files are:" $lsResult
查看 Bash 控制台:
Bash Variables
输出:
Bash 变量
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4