我有两个脚本; parentScript.sh
和childScript.sh
。
我希望能够在childScript.sh
内调用parentScript.sh
并返回任何阶段内发生的错误。即在childScript.sh
中发现的错误如下:
echo "ERROR: Feed file missing for $siteTag" >&2
我知道如何return the error out
back towards the parent shell.
但是我觉得它被篡改了,我不能再将printf
结果变成一个漂亮的变量。即。
error+="$( { ./childScript.sh | sed 's/Output/Useless/' 2>&4 1>&3; } 2>&1 )"
error+="$( { ./childScript.sh | sed 's/Output/Useless/' 2>&4 1>&3; } 2>&1 )"
本质上应该调用脚本两次,从两个脚本中获取错误并将它们存储在变量error
中,就像我想的那样,但它以某种方式通过使用{{1}来消除这些行}或echo "$error"
。
有没有人知道这里的解决方案是设法从多个命令中获取错误输出,但在printf "$error"
命令中保持对echo
的单独调用?
编辑:输出应为..
childScript.sh
但是
ERROR: Feed file missing for (..)
ERROR: Feed file missing for (..)
ERROR: Feed file missing for (..)
答案 0 :(得分:2)
$(..)
剥离尾随换行符。这在大多数情况下非常有用,例如
echo "Welcome to $(hostname). Enjoy your stay."
然而,在你的情况下,它会破坏它。你可以添加一个:
error+="$( { ./childScript.sh | sed 's/Output/Useless/' 2>&4 1>&3; } 2>&1 )"$'\n'