如何在unix中捕获一个shell脚本到另一个shell脚本的输出

如何在unix中捕获一个shell脚本到另一个shell脚本的输出,shell,unix,sed,awk,Shell,Unix,Sed,Awk,我正在运行一个shell脚本runsftp.sh 其输出将是“完成”或“失败” 我将这个脚本调用到另一个脚本中,如果run\u sftp.sh输出为“done”,它将执行一些命令 这就是算法。请建议 您可以使用$()或相反的` 因此: 如果[$(run_sftp.sh)=“完成”] 然后 诸如此类 retval=$(path/to/run_sftp.sh) 现在您已经在varretval中完成/失败了。您可以使用您的逻辑执行if检查。我假设您的脚本run\u sftp.sh将调用其他语句并仅在

我正在运行一个shell脚本runsftp.sh 其输出将是“完成”或“失败” 我将这个脚本调用到另一个脚本中,如果run\u sftp.sh输出为“done”,它将执行一些命令


这就是算法。请建议

您可以使用$()或相反的`

因此:

如果[$(run_sftp.sh)=“完成”] 然后

诸如此类

retval=$(path/to/run_sftp.sh)

现在您已经在var
retval
中完成/失败了。您可以使用您的逻辑执行if检查。

我假设您的脚本run\u sftp.sh将调用其他语句并仅在成功时生成done消息,并且run\u sftp.sh调用的其他命令不会生成done消息。 在这种情况下,捕获脚本运行的输出,然后grep完成

MSG=$(run_sftp.sh)
echo $MSG | grep 'done'
if [ $? -eq 0 ]
then
echo "run"
else
exit 9
fi

谢谢

为什么不让另一个脚本返回零表示成功?我不明白你的问题。你能详细说明一下吗?我也在执行其他命令,所以除了完成和失败之外还有其他输出,但我想只捕获完成,那么在这种情况下,我应该如何从命令输出中仅捕获完成?我也在执行其他命令,所以除了完成和失败之外还有其他输出,但我只捕获完成,那么,在这种情况下,我应该如何仅从命令输出捕获done呢?regex match check@Pooja25I正在使用
retval=$(sh run_sftp.sh)
cat$retval | grep“done”
但它不起作用它不会起作用,如果您想使用grep,请尝试
grep-qi“done”
MSG=$(run_sftp.sh)
echo $MSG | grep 'done'
if [ $? -eq 0 ]
then
echo "run"
else
exit 9
fi