Bash 初学者系列#2:理解 Bash Shell 脚本中的变量

时间变了,变量也变了!

如果您进行过任何类型的编程,您一定玩过很多变量。

如果您以前从未使用过变量,则可以将它们视为一个容器,用于存储随时间变化的信息。

变量在编写时总是派上用场 bash 脚本,在本教程中,您将学习如何在您的 bash 脚本。

在中使用变量 bash 外壳脚本

在本系列的最后一个教程中,您学会了编写一个 hello world 程序 bash.

#! /bin/bash

echo 'Hello, World!'

那是一个简单的 Hello World 脚本。 让我们把它变成一个更好的Hello World。

让我们通过使用 shell 变量来改进这个脚本,以便它用他们的名字来迎接用户。 编辑 hello.sh 脚本并使用 read 命令从用户那里获取输入:

#! /bin/bash

echo "What's your name, stranger?"

read name

echo "Hello, $name"

现在,如果您运行 hello.sh 脚本; 它会提示你输入你的名字,然后它会用你提供给它的任何名字打招呼:

[email protected]:~/scripts$ ./hello.sh 
What's your name, stranger?
Elliot
Hello, Elliot

在上述 example,我输入 Elliot 作为我的名字,然后脚本用“Hello, Elliot”打招呼。 这绝对比通用的“Hello, World”程序要好得多。 你不同意吗?

上述shell脚本的逐步解释

现在让我们在这里逐行浏览脚本,以确保您了解所有内容。

我首先包含了 shebang 行以明确声明我们将使用 bash shell 来运行这个脚本。

#!/bin/bash

接下来,我要求用户输入他/她的姓名:

echo "What's your name, stranger?"

这只是一个简单的 echo 命令,可以将一行打印到终端; 不言自明。

现在这是所有魔术发生的地方:

read name

在这里,我使用 read 命令将控制从运行脚本转移给用户,以便用户可以输入名称,然后将用户输入的任何内容存储在“名称”变量中。

最后,脚本用他们的名字向用户打招呼:

echo “Hello, $name”

请注意,您必须在变量名称前加上美元符号才能获取存储在变量名称中的值。 如果省略美元符号,则会显示“你好,姓名”。

这个美元符号在 bash 脚本。

整数、字符串还是字符? 如何创建不同的变量数据类型 bash 贝壳?

让我们再多弄点变量。

您可以使用等号来创建和设置变量的值。 为了 example,以下行将创建一个名为 age 的变量并将其值设置为 27。

age=27

创建年龄变量后,您可以根据需要更改其值。

age=3

上面的命令将变量age的值从27改为3。如果只有times可以回去,我能听到你说的!

变量可以保存不同类型的数据; 变量可以存储整数、字符串和字符。

letter=’c’
color=’blue’
year=2020

常量变量 bash 贝壳

你也可以创建一个常量变量,也就是说,一个值永远不会改变的变量! 这可以通过在变量名前加上 readonly 命令:

readonly PI=3.14159

上述命令将创建一个常量变量 PI 并将其值设置为 3.14159。 现在,你不能改变常量变量的值,如果你尝试,你会得到一个错误:

bash: PI: readonly variable

如您所见,您只能读取常量变量的值,但在创建后永远无法更改其值。

命令替换

将命令的输出存储到变量中的能力称为命令替换,它是迄今为止最令人惊奇的功能之一 bash.

date 命令是经典的 example 演示命令替换:

TODAY=$(date)

上面的命令会将命令 date 的输出存储到变量 TODAY 中。 请注意,您需要如何将 date 命令括在一对括号和一个美元符号(在左侧)中。

Bash shell 中的命令替换

或者,您也可以将命令括在一对反引号中:

TODAY=`date`

反引号方法是执行命令替换的旧方法,因此我强烈建议您避免使用它并坚持使用现代方法:

variable=$(command)

开始之前,尝试将 Hello World 脚本转换为智能 HelloWorld 脚本

现在,既然您刚刚学会了如何进行命令替换,那么最后一次访问 Hello World 脚本来完善它是有意义的!

上次,您要求用户输入他/她的姓名,以便脚本向他们打招呼; 这次你不用问了,你的脚本已经知道了!

使用 whoami 命令和命令替换来问候运行脚本的人:

#! /bin/bash           

echo "Hello, $(whoami)"

如您所见,您只需要两行! 现在运行脚本:

./hello.sh

它就像一个魅力!

在中使用命令替换 bash 外壳脚本

好的,这将我们带到本教程的结尾。 您可以通过解决问题来练习刚刚学到的知识,如果遇到困难或需要提示,请参考他们的解决方案。

Bash 第 2 章练习题 练习你在本章中学到的内容的问题及其解决方案 Bash-Chapter-2-Practice-Questions-Linux-Handbook.pdf 29 KB

下载圈

我希望你和我一样喜欢使用 shell 变量。 查看本系列的下一章,我将在其中讨论如何将参数传递给 shell 脚本。