cas*_*cas 12
$()是命令替换。它执行括号内的命令并返回该命令的输出。
它通常用于将程序的输出放入变量中。例如
$ month=$(date +%m)
$ echo $month
02
Run Code Online (Sandbox Code Playgroud)
或者使用一个程序的输出作为另一个程序的参数,例如
$ printf '%s\n' $(date +%B)
February
Run Code Online (Sandbox Code Playgroud)
(好吧,是的,printf这是一个人为的例子,因为仅仅运行date +%B就会产生相同的输出......但它确实演示了它是如何工作的)。
括号内的命令可以根据您的需要简单或复杂,从单个程序到长管道命令。例如,我经常使用如下命令从 Debian 系统中删除旧的内核软件包:
apt-get purge $(dlocate -k | grep '6\.0\.0-[245]')
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您可能还会看到使用反引号 (`) 的脚本。这是一种旧的、过时的命令替换形式,由于遗留原因而受到支持,但不应在新脚本中使用。
与 一起使用时eval,它会导致您的 shell 执行输出。在这种情况下,运行/opt/homebrew/bin/brew shellenv会返回一堆文本,例如var=value并eval在当前 shell 中运行它们,从而将这些变量设置为所需的值。
来自help evalbash:
eval:eval [arg ...]将参数作为 shell 命令执行。
将 ARG 组合成单个字符串,使用结果作为 shell 的输入,并执行生成的命令。
退出状态:返回命令的退出状态,如果命令为空,则返回成功。
尝试单独运行/opt/homebrew/bin/brew shellenv看看它会产生什么输出。
| 归档时间: |
|
| 查看次数: |
15084 次 |
| 最近记录: |