将信息从我的程序传递到调用脚本(退出时)的正确方法是什么



我想知道,当程序退出时,将信息从我的程序传递到调用脚本的正确方法是什么?假设我有"程序X"和一个应该执行以下操作的shell脚本:

1) 调用可以返回"状态 A"或"状态 B"的"程序 X"

2) 成功执行"程序X"后,继续执行3A)或 3B),取决于其返回状态

3A)做一些在"程序X"中不容易完成的事情

3B)做一些在"程序X"中不容易完成的其他事情

当然,我可以简单地使用返回代码来指示 shell 脚本应该如何继续。但是,我认为退出代码 0 表示成功,所有其他值表示错误是一种广泛接受的约定。从这个角度来看,使用退出代码来确定后续的控制流(成功执行后)显然是对系统的滥用。

所以我的问题是:实现这一目标的正确方法是什么?

感谢您的任何提示!

这是 shell 中命令替换的简单应用。

命令替换

假设ProgramX3A&3B是你的可执行文件。

而不是返回State A/State B而是简单地根据条件回显3A/3BProgramX然后简单地使用命令替换

$(ProgramX)

以上将相应地运行3A3B

注意:缺点是您将无法打印任何其他内容来stdout


编辑:为什么不根据条件将 3A 或 3B 附加到程序 X 的末尾

程序X

#at the end
[ 'condition for 3A' ] && 3A 
[ 'condition for 3B' ] && 3B

顺便说一下,你在这里没有打破任何惯例


编辑:退出状态方式

如果您想以退出状态方式执行此操作,则在ProgramX基于条件返回 58 或 59。好吧,您实际上可以返回任何东西,但 58 是十进制 # 对应于十六进制中的 3A,59 对应于 3B 的十进制 #。

程序X

#at the end
[ 'condition for 3A' ] && exit 58
[ 'condition for 3B' ] && exit 59

然后做

[ $? -eq 58 ] && 3A
[ $? -eq 59 ] && 3B

相关内容

  • 没有找到相关文章

最新更新