【发布时间】:2023-03-30 02:21:01
【问题描述】:
执行这样的命令有什么区别:
var=$(ls -alh /dir)
然后这样做:
var=`ls -alh /dir`
一种方法可以用于更多的解释器吗?
【问题讨论】:
-
@tarrsalah 谢谢,我搜索的不够彻底!
执行这样的命令有什么区别:
var=$(ls -alh /dir)
然后这样做:
var=`ls -alh /dir`
一种方法可以用于更多的解释器吗?
【问题讨论】:
他们都是command substitution
第 3.5.4 节 http://www.gnu.org/software/bash/manual/bashref.html
Bash 通过执行命令并替换 用命令的标准输出替换命令,任何 尾随换行被删除。嵌入的换行符不会被删除,但它们 可以在分词期间删除。命令替换 $(cat file) 可以替换为等效但更快的 $(
当使用旧式反引号形式的替换时,反斜杠 保留其字面意思,除非后面跟“$”、“`”或“\”。 前面没有反斜杠的第一个反引号会终止命令 替代。使用 $(command) 形式时,所有字符之间 括号构成命令;没有人受到特殊对待。
命令替换可以嵌套。使用反引号时嵌套 表格,用反斜杠转义内部反引号。
如果替换出现在双引号内,分词和 结果不进行文件名扩展。
【讨论】: