Shell 脚本如何获取外部命令的输出?

推荐答案

在 Shell 脚本中,可以通过以下几种方式获取外部命令的输出:

  1. 使用反引号(`

  2. 使用 $()

  3. 使用管道和 read 命令

  4. 使用 exec 和文件描述符

本题详细解读

1. 使用反引号(`

反引号是 Shell 中用于命令替换的传统方式。它会执行反引号内的命令,并将命令的输出替换到脚本中。例如:

这种方式简单易用,但在嵌套使用时容易出错,且可读性较差。

2. 使用 $()

$() 是反引号的现代替代品,功能相同但更易读且支持嵌套。例如:

推荐使用 $(),因为它更清晰且不易出错。

3. 使用管道和 read 命令

通过管道将命令的输出传递给 read 命令,可以将输出存储在变量中。例如:

需要注意的是,read 命令在子 Shell 中执行时,变量可能不会在父 Shell 中保留。因此,这种方式在某些情况下可能不适用。

4. 使用 exec 和文件描述符

通过 exec 命令和文件描述符,可以将命令的输出重定向到一个文件描述符,然后使用 read 命令读取。例如:

这种方式适用于需要处理多个命令输出的复杂场景,但代码较为复杂。

总结

  • 对于简单的命令输出获取,推荐使用 $()
  • 对于需要处理多个命令输出的复杂场景,可以考虑使用 exec 和文件描述符。
  • 避免使用反引号,除非在旧脚本中需要兼容性。
纠错
反馈