【发布时间】:2014-03-18 11:13:03
【问题描述】:
我有以下 bash 脚本 java_debug 来记录所有 java 执行(标准和错误控制台):
#! /bin/bash
echo param1: $1
echo param2: $2
(java HelloWorld "$@" 2>&1 ) | tee /tmp/log.txt
我运行它:
$ java_debug v1 "v2 with space"
param1: v1
param2: v2 wirh space
Error: Could not find or load main class HelloWorld
$ echo $?
0
在此示例中,java 找不到 HelloWorld 类,因此显示错误。 但是,错误丢失在 $? (我们得到 0 而不是 1)因为 subshell 和/或管道。
我需要 java_debug 返回与 java 执行相同的退出代码
如何修复这个脚本?
注意:我可以使用script命令代替2>&1 | tee,但不幸的是脚本命令在不同系统中的执行会发生变化(redhat中的脚本参数与OSX中的脚本参数不一样)。
注意:我知道 bash 是一种可怕的语言,不应该使用它;但在这种情况下我别无选择。
【问题讨论】:
-
bash在用于其预期目的时是一种很好的语言。
标签: bash