欢迎,来自IP地址为:18.223.0.53 的朋友


这一节,我们详解讲解 Bash 脚本中的变更使用。

如果之前接触过编程,那么对于变量的概念就不会陌生。

如果没有接触编程,那么可以把变量理解为一个盒子,用于保存信息。这信息可以随时被修改。

让我们来看看如何使用变量。

Bash 脚本使用变量

打开终端,初始化一个变量并给其赋一个随机数值 4:

# var=4

现在,我们已经有了一变量,变量名为”var”,它的值是4。想到使用变量的值,则需要在变量名前加”$”,这个步骤就是所谓的参数展开。

使用如下命令来演示变量值的获取:

# echo The value of var is $var

PS:需要注意的是,在变量初始化时,”=”号前后都不允许出现空格。

同时,变量值是可以修改的,可以在任何时候修改变量值,修改后会马上生效。

根据 Bash 规则,变量的值可以是数值、字符以及字符串(包括多个字符甚至空格字符集合)。

PS:同其它 Linux 规则一样,变量名是大小写敏感的,可以使用字符、数字以及下划线”_”。

注意:包含空格的字符串需要使用双引号””括起来,以免出错。

您可能已经注意到,示例没有使用 Bash 脚本来显示变量的值。因为我们自己初始化的变量只在本次会话中有效,如果关闭终端,则之前创建的变量就不再存在了。

但是这也不绝对,因为每个 Linux 的发行版会添加一些系统全局变量,这些变量是随时可以使用的,当然在脚本文件中也可以调用。这些系统变量采用全部大写字母形式,包括 $USER、$PWD、$HOME、$SHELL等。

进入之前创建的 bash_scripts 目录,创建一个脚本文件”knock.sh”,内容如下:

#!/usr/bin/bash

echo knock, knock
echo "Who is there?"
echo "It's me,$USER"

修改文件权限并执行该脚本,会出现如下内容:

注意到脚本执行后,会自动把当前用户名添加到输出如果中了么?这就是全局变量的魔法,$USER 变量保存了当前用户名。

脚本中同样可以使用引号,因为引号在 bash 中是具有特殊意义的。它可以处理空格以及特定字符。

处理变量中的空格

例如需要定义一个变量”greetings”,它的值是”hello and welcome”。如果使用如下方式初始化变量:

# greetings=Hello and welcome

则会遇到报错,提示 and 命令找不到:

-bash: and: command not found

此时,就需要使用引号将全部内容括起来,表示空格同样为字符串的一部分。引号可以使用单引号,也可以使用双引号,不引用其它变量时效果一致。需要使用其它变量时,则使用双引号括起,因为单引号会将变量引用强制转换为字符串,不能正确返回变量的值。

将命令结果赋值给变量

确实如此,我们可以将命令的输出结果赋值给一个变量,并在脚本中使用它,这被使用命令替代:

var=$(command)

使用示例如下:

today=$(date +%D)
echo "Today's date is $today"

一些比较老的语法中,变量替换会使用反引号方式(就是键盘~下面的那个字符),虽然它依然有效,但建议使用”$()”方式。

变量值通常是可以修改的,但是如果在初始化变量时使用”readonly”,则会将此变量定义为常量(即只读),之后再次修改该变量值时则不被允许。

下一节,我们将学习如何使用 bash 脚本同用户交互,接收用户的输入。>>Bash 基础(三):传参以及接收输入<<

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注