如何以简单的方式将shell脚本输出重定向到Logcat

时间:2017-11-19 14:09:07

标签: android linux shell logging logcat

我可以将脚本文件(ScriptName.sh)的输出重定向到Android中的logcat,如下所示:

#!/system/bin/sh
 echo "Comment 1"
 log -p v -t "ScriptName.sh" "Comment 1"

 echo "Comment 2"
 log -p v -t "ScriptName.sh" "Comment 2"

 echo "Comment 3"
 log -p v -t "ScriptName.sh" "Comment 3"

然后我可以通过以下方式登录:

logcat | grep "ScriptName.sh" 

如您所见,我必须为每个“echo”命令编写“log”命令。 有没有办法在脚本开头(或任何地方)编写log命令,让所有echo都转到logcat而不重复“log”命令?

1 个答案:

答案 0 :(得分:1)

如果log可以直接读取标准输入,那么tee输出到log和/ dev / tty会更容易。看起来log没有提供,但它很容易模仿:

#!/system/bin/sh
{
echo Comment 1
echo Comment 2
echo Comment 3
} | tee /dev/tty | while read line; do 
 log -p v -t "$0" "$line"
done

该主题有很多变化。在log周围编写一个简单的包装器可能会更清楚,它可以为您执行此操作,并且您可能希望使用适当的重定向和管道来执行脚本顶部附近的包装器。例如(如果使用支持进程替换的shell):

#!/bin/bash                    
exec > >(tee /dev/tty | log_wrapper ... )

或者,如果您没有可用的流程替换:

#!/bin/sh                    

trap 'rm -f $FIFO' 0
FIFO=$(mktemp)
< $FIFO tee /dev/tty | log_wrapper ... &
exec > $FIFO  # Redirect all further output to the log wrapper