Mic*_* TM 24 shell bash command
什么是$()在Linux的shell命令?
例如:
chmod 777 $(pwd)
Run Code Online (Sandbox Code Playgroud)
cha*_*aos 28
它与反引号 `` 非常相似。
它被称为命令替换(posix 规范)并且它调用一个子shell。$()反引号 ( `…`)的大括号或之间的命令在子 shell 中执行,然后将输出放置在原始命令中。
与反引号不同,$(...)表单可以嵌套。所以你可以在另一个替换中使用命令替换。
替换中的转义字符也存在差异。我更喜欢这种$(...)形式。
在 POSIX 或类似 POSIX 的 shell ( ksh, bash, ash, zsh, yash...) 中,它就像``:执行内部命令$()并替换为其标准输出。除非$()在双引号内,否则会完成分词和文件名生成。因此
chmod 777 $(pwd)
Run Code Online (Sandbox Code Playgroud)
应替换为:
chmod 777 "$(pwd)"
Run Code Online (Sandbox Code Playgroud)
避免在当前工作目录路径上进行分词和文件名生成。
或者甚至更好(除非在某些 shell 下,例如 zsh,以防目录已重命名):
chmod 777 "$PWD"
Run Code Online (Sandbox Code Playgroud)
因为$PWD是一个特殊变量,用于保存 POSIX shell 中当前工作目录的路径。
或者甚至更好:
chmod 777 .
Run Code Online (Sandbox Code Playgroud)
由于.当前目录中的条目是指向该目录本身的硬链接。
| 归档时间: |
|
| 查看次数: |
30484 次 |
| 最近记录: |