7

Bash 初学者系列 2:了解 bash shell 脚本中的变量

 2 years ago
source link: https://www.51cto.com/article/740977.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

029be9e10092e6a99d122904b28faf4fc34149.jpg

如果你使用编程语言编写过程序,那么一定接触过变量。而在 bash 脚本的编写时,变量也是一个很重要的概念。今天我们分享一下如何在 bash 脚本中使用变量。

在 bash shell 脚本中使用变量

在前一篇文章中,我们介绍了如何​​在 bash 中写一个 hello world​​:

#! /bin/bash
echo 'Hello, World!'

这是一个很简单的 hello world,现在我们修改一下,将其变为一个稍微高级一点的 hello world。

我们在其中定义变量,使用 read 命令接收用户的输入,将用户的输入赋值给变量:

#! /bin/bash
echo "What's your name, stranger?"read nameecho "Hello, $name"

运行上述脚本,系统会提示你输入名字,然后打印出你输入的名字,如下所示:

$ ./hello.sh What's your name, stranger?ElliotHello, Elliot

图片

上述脚本的拆解说明

现在我们将上述脚本一行一行的拆解说明。

首先是 shebang 行,以明确说明我们使用的是 bash shell 来运行这个脚本。

#!/bin/bash

接下来,提示用户输入姓名:

echo "What's your name, stranger?"

这是一个简单的 echo 命令,用于打印一行信息到终端。

然后下面,是比较“高级”的地方:

read name

这里,我们使用 read 命令将终端的控制权从脚本运行移交到用户,以便用户可以输入名称,然后将用户输入的内容存储在 name 变量中。

最后,脚本打印出问候信息:

echo “Hello, $name”

这里需要注意,使用变量的时候,需要在变量名前面加上美元符号 $,以获取存储在变量名中的值。如果省略美元符号,会把变量名当作普通字符串输出。这个美元符号在bash脚本中被称为解引用运算符(dereference operator)。

关于整数、字符串或者字符,怎样在 bash shell 中创建不同数据类型的变量?

我们再深入了解一下变量。

我们可以使用等号来创建和设置变量的值。例如,以下行将创建一个名为 age 的变量,并将其值设置为27:

age=27

变量创建以后,可以根据需要改变它的值:

age=3

变量可以保存不同类型的数据,整数、字符串或者字符。

letter='c'color='blue'year=2020

bash shell 中的常量

在 bash 中可以创建常量,也就是一个变量值不会改变的变量。可以在变量名前添加 readonly 命令来实现:

readonly PI=3.14159

上面的命令将创建一个常量变量 PI,并将其值设置为3.14159。这样不能在脚本中修改 PI 的值,如果尝试修改的话,会报错:

bash: PI: readonly variable

图片

命令替换(command substitution)

将命令的输出存储到变量中的能力称为命令替换,这是 bash 最重要的特性之一。

如下命令所示,date 命令的输出会存储到变量 TODAY 中,但是需要注意的是,需要将 data 命令放到一对括号中,且前面添加美元符号 $:

TODAY=$(date)

图片

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

TODAY=`date`

使用反括号是一种比较老的方式,因此我们建议使用括号的方式:

variable=$(command)

我们了解了命令替换之后,可以在将前面我们写的 hello world 再完善一下。

在上面的例子中,我们在脚本中让用户输入名字,在这个例子中,我们不要求用户输入了,而是使用 whoami 命令获取当前用户的名称,如下所示:

#! /bin/bash           
echo "Hello, $(whoami)"

只有两行代码,很简洁。运行:

./hello.sh

图片

以上就是本次分享全部内容,欢迎讨论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK