【问题标题】:Is it possible to return value from ruby script and read that value inside c or shell script?是否可以从 ruby​​ 脚本返回值并在 c 或 shell 脚本中读取该值?
【发布时间】:2015-03-20 11:07:47
【问题描述】:

我们如何从 ruby​​ 脚本返回值?

#!/usr/bin/env ruby

a = "test"
a

我们如何在 Ubuntu 终端或 java 或 c 中访问 'a' 的值?

【问题讨论】:

  • 打印出来。 Ruby vars 就是这样:Ruby vars。您也可以使用值退出。
  • @DaveNewton 是正确的,您可以使用 STDOUT 打印并将两者都用作$stdout。这将输出到标准输出流。您还可以将结果正确写入文件并在脚本完成后解析文件。这是一篇关于IO in Ruby 主题的不错的小帖子
  • 假设您无权访问该脚本。您想运行任意 ruby​​ 脚本,并将其评估结果输出到 AS THOUGH 调用 p 或 pp 的最终值,但无法编辑脚本本身。

标签: ruby bash shell ubuntu


【解决方案1】:

在 ruby​​/python 脚本中打印您的变量,然后可以通过示例从 shell 脚本中读取它:

#!/bin/bash
ruby_var=$(ruby myrubyscript.rb)
python_var=$(python mypythonscript.py)

echo "$ruby_var"
echo "$python_var"

注意你的 ruby​​/python 脚本只打印这个变量(例如,命名管道有更复杂的方法来实现更多交互)。

【讨论】:

  • 感谢 +1,但我的回答超出了主题,因为它是红宝石。无论如何,在 ruby​​ 或 python 中打印都是一样的。
【解决方案2】:

如果值为0到255之间的整数,可以使用退出状态

$ ruby -e 'var=42; exit var'
$ val=$?
$ echo $val
42

【讨论】:

  • 是否可以返回文件名?有没有其他方法可以访问文件名?
  • 请注意,非零的退出状态表示错误。
  • @krunalshah,您希望 philippe lhardy 的回答将子进程中的字符串返回到 shell。
  • @Ajedi32,按照惯例是的。但由于有 256 种可能的退出状态,它可以传达比二进制“成功|失败”状态更多的信息。
  • @glennjackman 嗯,这不仅仅是只是约定。有许多常用的 Unix 命令和进程在其中根深蒂固。例如,尝试在您的终端中运行set -e,然后在您的答案中再次尝试该示例。我的观点是,虽然您在技术上可以使用退出状态从 Unix 命令返回值,但我不建议在实际应用程序中使用它来处理错误代码以外的任何内容。
猜你喜欢
  • 2021-07-07
  • 2013-07-16
  • 2016-03-14
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 2014-05-25
  • 2021-02-23
  • 1970-01-01
相关资源
最近更新 更多