How to Use Variables in Shell Scripting

在每一种编程语言中,变量都扮演着重要的角色,在 Linux shell 脚本中,我们可以使用两种类型的变量: 系统定义变量用户定义变量

shell 脚本中的变量是引用 数字字符值 的一种手段。与正规的编程语言不同,shell 脚本不要求您为变量声明类型。

在这篇文章中,我们将通过示例讨论如何在 bash shell 脚本中使用变量。

系统定义变量

这些是由操作系统 (Linux) 本身创建和维护的变量,通常这些变量定义为大写字母。我们可以使用 set 命令来查看这些变量。

$ set

Linux-Shell-Variables-Meanings

使用 echo 命令打印上述变量的值

$ echo $HOME
/home/linuxtechi
$ echo $USER
linuxtechi
$

我们可以在 bash 脚本中使用环境变量,方法是在环境变量的名称前加一个美元符号。

$ cat myscript

#!/bin/bash
# display user information from the system.
echo "User info for userid: $USER"
echo UID: $UID
echo HOME: $HOME

在运行脚本时,echo 命令中的环境变量将被它们的当前值所替换。我们能够将 $USER 系统变量放在双引号内,并且 shell 脚本仍然能够弄清楚我们的意思。然而,使用这种方法有一个缺点,看看下面的例子中发生了什么。

$ echo "The cost of the item is $15"
The cost of the item is 5
$

这显然不是我的本意。每当脚本看到引号内的美元符号时,它就假定您在引用一个变量。在本例中,脚本尝试显示变量 $1 (未定义),然后显示数字 5。要显示实际的美元符号,必须在前面加一个反斜杠字符。

$ echo "The cost of the item is \$15"
The cost of the item is $15
$

这样好多了,反斜杠允许 shell 脚本将 $ 符号解释为一个实际的美元符号,而不是一个变量。

用户定义变量

这些变量由用户定义,shell 脚本允许我们在脚本中设置和使用我们自己的变量。设置变量允许您临时存储数据并在整个脚本中使用它,使 shell 脚本更像一个真正的计算机程序。

用户变量由字母数字或下划线组成,长度不超过20,用户变量是区分大小写的。

用等号将值赋给用户变量,变量、等号和值之间不能有空格,下面是几个例子。

var1=10
var2=-57
var3=testing
var4="still more testing"

shell 脚本自动确定变量使用的数据类型,在 shell 脚本中定义的变量在 shell 脚本的整个生命周期中保持它们的值,但是在 shell 脚本结束时被删除。

就像系统变量一样,用户变量也可以使用美元符号来引用。

$ cat test3
#!/bin/bash
# testing variables
days=10
guest="Katie"
echo "$guest checked in $days days ago"
days=5
guest="Jessica"
echo "$guest checked in $days days ago"
$

运行脚本,产生以下输出

$ chmod u+x test3
$ ./test3
Katie checked in 10 days ago
Jessica checked in 5 days ago
$

下面看一个赋值中使用变量的例子

$ cat test4
#!/bin/bash
# assigning a variable value to another variable
value1=10
value2=$value1
echo The resulting value is $value2
$

输出如下所示:

$ chmod u+x test4
$ ./test4
The resulting value is 10
$

如果您忘记了美元符号,输出如下所示:

value2=value1
you get the following output:
$ ./test4
The resulting value is value1
$

在 shell 变量中使用反打号

反打号允许您将 shell 命令的输出分配给一个变量,它是脚本编程中的主要构建块,必须用反打号包围整个命令,我们来看一个示例。

$ cat test5
#!/bin/bash
# using the backtick character
testing=`date`
echo "The date and time are: " $testing
$

The variable testing receives the
output from the date command, and it is used in the echo statement to
display it. Running the shell script produces the following output:

变量 testing 接收 date 命令的输出,并在 echo 语句中显示它,运行 shell 脚本产生以下输出。

$ chmod u+x test5
$ ./test5
The date and time are: Tue 4 Oct 05:20:44 BST 2022
$

在 bash 中,您还可以使用 $() 语法来代替反勾号,它具有可重入的优点。

$ echo " Today’s date & time is :" $(date)
Today’s date & time is : Tue 4 Oct 05:21:51 BST 2022
$

这就是本文的全部内容,我希望您已经学会了如何在 bash shell 脚本中使用变量。请在下面的评论部分发表您的疑问和反馈。

我的开源项目

酷瓜云课堂-开源知识付费解决方案


鸠摩智首席音效师
475 声望9 粉丝

身强体健,龙精虎猛的活着。