时间变了,变量也变了!
如果您进行过任何类型的编程,您一定玩过很多变量。
如果您以前从未使用过变量,则可以将它们视为一个容器,用于存储随时间变化的信息。
变量在编写时总是派上用场 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 命令括在一对括号和一个美元符号(在左侧)中。

或者,您也可以将命令括在一对反引号中:
TODAY=`date`
反引号方法是执行命令替换的旧方法,因此我强烈建议您避免使用它并坚持使用现代方法:
variable=$(command)
开始之前,尝试将 Hello World 脚本转换为智能 HelloWorld 脚本
现在,既然您刚刚学会了如何进行命令替换,那么最后一次访问 Hello World 脚本来完善它是有意义的!
上次,您要求用户输入他/她的姓名,以便脚本向他们打招呼; 这次你不用问了,你的脚本已经知道了!
使用 whoami 命令和命令替换来问候运行脚本的人:
#! /bin/bash
echo "Hello, $(whoami)"
如您所见,您只需要两行! 现在运行脚本:
./hello.sh
它就像一个魅力!

好的,这将我们带到本教程的结尾。 您可以通过解决问题来练习刚刚学到的知识,如果遇到困难或需要提示,请参考他们的解决方案。
Bash 第 2 章练习题 练习你在本章中学到的内容的问题及其解决方案 Bash-Chapter-2-Practice-Questions-Linux-Handbook.pdf 29 KB
下载圈
我希望你和我一样喜欢使用 shell 变量。 查看本系列的下一章,我将在其中讨论如何将参数传递给 shell 脚本。