深入探索命令替换、进程替换与资源限制
1. 命令替换的相关特性
1.1 命令替换输出处理
在进行命令替换时,其输出不会被重新评估。例如,若输出包含 $ 字符,它们不会被用于引入替换,而是直接作为字面字符插入到命令行。不过,实际情况并非如此简单,在 bash 中,命令替换产生的模式字符是活跃的,因为通配符扩展发生在命令替换之后。示例如下:
bash$ ls $(echo '*')
...files in the current directory…
而在 zsh 中,默认情况下替换字符不会有特殊含义,它们会被当作已加引号处理。若要实现 bash 的行为,可以设置 glob_subst 选项。有时,你可能希望完全重新评估命令行,这时可以使用 eval 命令。
1.2 引号在命令替换中的作用
在使用 ls 命令时,若目录名包含空格,首次尝试可能会因空格导致目录名被拆分为两个,被 ls 视为不同的文件名。而第二次尝试使用引号则可避免此问题(这种带空格的文件名在 Windows 中极为常见)。但需注意,若将加引号的形式(如 'Program Files' )放入文件 mydirs 中,是无法正常工作的。因为在命令替换发生时,shell 已经解析了引号,之
超级会员免费看
订阅专栏 解锁全文
2841

被折叠的 条评论
为什么被折叠?



