【问题标题】:How to get the binary execution result in shell script?如何在 shell 脚本中获取二进制执行结果?
【发布时间】:2020-03-05 15:12:31
【问题描述】:

在环境变量中定义了一个二进制程序。运行“set”时,我看到 CHECK_MASTER=/usr/local/bin/check_master

在终端中,运行$CHECK_MASTER,我们可以看到终端上显示0或1。 在 shell 脚本中,我可以运行 /usr/local/bin/check_master | tee /dev/tty 并且结果显示在终端上,即 0 或 1。

问题: (1) 如何获取执行/usr/local/bin/check_master的结果并将结果分配给shell脚本中的$VAR之类的变量? (2) 与(1)类似,如何使用$CHECK_MASTER而不是使用shell脚本中的文件路径?

我尝试过重定向标准输出、标准错误、VAR=$($CHECK_MASTER)。它们都不起作用。

【问题讨论】:

  • zsh?重击?克什? tcsh?贝壳?...
  • 它是“bash”外壳。

标签: linux shell


【解决方案1】:

从问题来看,check_master 似乎会将 0 或 1 发送到 stderr。将 stderr 重定向到 stdout 应该会有所帮助:

CHECK_MASTER=...
VAR=$($CHECK_MASTER 2>&1)

【讨论】:

  • 我试过这个,但没有用。但是,我尝试了 VAR=$(/usr/local/bin/check_master 2>&1) 并且它有效。看来 $CHECK_MASTER 会被区别对待。
  • 您是如何“设置”CHECK_MASTER 的?它应该被导出(例如 envvar)以传递给子 shell。 'set' 将显示这两种类型。
猜你喜欢
  • 2013-01-03
  • 2012-05-16
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多