注册
登录
Ruby
如何从Ruby调用Shell命令
返回
如何从Ruby调用Shell命令
作者:
狗头军师
发布时间:
2025-01-04 09:10:17 (2天前)
如何从Ruby程序内部调用Shell命令?然后如何将这些命令的输出返回到Ruby?
收藏
举报
2 条回复
1#
回复此人
v-star*위위
|
2020-07-29 15-54
该说明基于我的一个朋友的注释Ruby脚本。如果要改进脚本,请随时在链接上进行更新。 首先,请注意,当Ruby调用shell时,通常调用/bin/sh,而不是 Bash。并非/bin/sh所有系统都支持某些Bash语法。 以下是执行Shell脚本的方法: cmd = "echo 'hi'" # Sample string that can be used Kernel#` ,通常称为反引号– `cmd` 就像许多其他语言一样,包括Bash,PHP和Perl。 返回shell命令的结果(即标准输出)。 文件:http : //ruby-doc.org/core/Kernel.html#method-i-60 value = `echo 'hi'` value = `#{cmd}` 内置语法 %x( cmd ) 继x字符是一个分隔符,它可以是任何字符。如果分隔符是字符中的一个(,[,{,或<,文字由字符直到匹配的结束分隔符,以嵌套定界符对帐户。对于所有其他定界符,文字包括直到下一个定界符出现的字符。#{ ... }允许字符串插值。 像反引号一样,返回shell命令的结果(即标准输出)。 文件:https://docs.ruby-lang.org/en/master/syntax/literals_rdoc.html#label-Percent+Strings value = %x( echo 'hi' ) value = %x[ #{cmd} ] Kernel#system 在子shell中执行给定命令。 返回true是否找到命令并成功运行,false否则返回。 文件:http : //ruby-doc.org/core/Kernel.html#method-i-system wasGood = system( "echo 'hi'" ) wasGood = system( cmd ) Kernel#exec 通过运行给定的外部命令来替换当前进程。 不返回任何值,当前进程将被替换且永远不会继续。 文件:http : //ruby-doc.org/core/Kernel.html#method-i-exec exec( "echo 'hi'" ) exec( cmd ) # Note: this will never be reached because of the line above 以下是一些额外的建议: $?与相同$CHILD_STATUS,如果使用反引号system()或,则访问上次系统执行的命令的状态%x{}。然后,您可以访问exitstatus和pid属性: $?.exitstatus 有关更多阅读,请参阅: http://www.elctech.com/blog/im-in-ur-commandline-executin-ma-commands http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html http://tech.natemurray.com/2007/03/ruby-shell-commands.html
编辑
登录
后才能参与评论