我有一个用ruby编写的简单shell脚本,它运行一些预定义的命令并保存输出字符串。
这个脚本运行良好,但是如果命令失败,我需要一个有条件的路分支。我试过使用$?
对象,但是脚本在到达那里之前就退出了。
#!/usr/bin/ruby
def run_command(cmd)
`#{cmd}`
if $?.success?
# continue as normal
else
# ignore this command and move on
end
end
run_command('ls')
run_command('not_a_command')
# Output:
# No such file or directory - not_a_command (Errno::ENOENT)...
我尝试过$?.exitstatus
,甚至只是puts $?
,但它总是在到达那里之前退出,因为脚本显然在到达该行之前运行了命令。
有没有办法在脚本中实际运行命令之前 * 检查命令是否会运行?
希望你已经明白了,谢谢你抽出时间!
1条答案
按热度按时间qv7cva1a1#
使用
system
(根据退出代码返回true或false)而不是反勾号(返回输出字符串):如果您希望它安静地运行而不污染您的日志/输出: