Linux Shell 脚本中的反引号 (`) 符号

shell 脚本最有用的特性之一是低反引号字符,在 Linux 世界中通常称为反引号 (`)。
小心——这不是我们习惯用于字符串的普通单引号字符。
因为它在 shell 脚本之外不经常使用,所以我们甚至可能不知道在键盘上的何处找到它。
我们应该熟悉它,因为它是许多 shell 脚本的重要组成部分。

提示:在美式键盘上,它通常与波浪号 (\∼) 位于同一键上。

反引号允许我们将 shell 命令的输出分配给变量。
虽然这看起来并不多,但它是脚本编程的主要构建块。
我们必须用反引号将整个命令行命令括起来:

# testing=`date`

shell 在反引号内运行命令并将输出分配给变量 testing。
以下是使用普通 shell 命令的输出创建变量的示例:

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

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

$ chmod u+x myscript.sh
$ ./myscript.sh
The date and time are: Mon Jan 21 09:13:42 IST 2014
$

在这个例子中,这并不是那么令人兴奋(你可以很容易地把命令放在 echo 语句中),但是一旦你在一个变量中捕获了命令输出,你就可以用它做任何事情。

下面是一个如何使用反引号捕获当前日期并使用它在脚本中创建唯一文件名的流行示例:

#!/bin/bash
# copy the /usr/bin directory listing to a log file
today=`date +%y%m%d`
ls /usr/bin -al > /tmp/log.$today

今天变量被分配了格式化日期命令的输出。
这是用于提取日志文件名的日期信息的常用技术。
+%y%m%d 格式指示 date 命令将日期显示为两位数的年、月和日:

$ date +%y%m%d
140721
$

该脚本将值分配给一个变量,然后将其用作文件名的一部分。
该文件本身包含目录列表的重定向输出。
运行脚本后,我们应该会在 /tmp 目录中看到一个新文件:

$ ls -l /tmp/log.140721 
-rw-rw-r-- 1 geek geek 116755 Jan 21 09:21 /tmp/log.140721

日志文件使用 $today 变量的值作为文件名的一部分出现在目录中。
日志文件的内容是 /usr/bin 目录中的目录列表。
如果脚本在第二天运行,日志文件名将是log.140722,从而为新的一天创建一个新文件。

日期:2020-09-17 00:10:58 来源:oir作者:oir