在脚本执行完成之前,tee不会写入文件?

时间:2016-11-21 00:49:39

标签: bash tee

我正在尝试从Android应用自动收集效果数据(加载和屏幕渲染时间)。我使用test-runner.py(内部工具)来构建应用程序并在使用adb命令获取性能数据之前运行测试。我的bash脚本如下所示:

BASE_DIR=../Application/app/src/custom-feeds
CTF_DIR=../../../../ComponentTestFramework
OUTPUT_FILE=out.txt

if test -e $OUTPUT_FILE
then
    rm $OUTPUT_FILE
fi

teardown ()
{
    cd $BASE_DIR
    adb logcat -d PerformanceTest:D *:S | grep 'Loading' | tee -a $OUTPUT_FILE
    adb logcat -d ActivityManager:I *:S | grep 'ContentBrowseActivity:\s+\+' | tee -a $OUTPUT_FILE
    ./restore.sh
}

# small sample feed

echo Testing sample feed with 10 initial items
echo size = 10 > $OUTPUT_FILE
cd $CTF_DIR
python3 test_runner.py -f $BASE_DIR/config-B-10.json
teardown

# medium sample feed

echo Testing sample feed with 100 initial items
echo size = 100 > $OUTPUT_FILE
cd $CTF_DIR
python3 test_runner.py -f $BASE_DIR/config-B-100.json
teardown

# large sample feed

echo Testing sample feed with 500 initial items
echo size = 500 > $OUTPUT_FILE
cd $CTF_DIR
python3 test_runner.py -f $BASE_DIR/config-B-500.json
teardown

# super large sample feed

echo Testing sample feed with 5000 initial items
echo size = 5000 > $OUTPUT_FILE
cd $CTF_DIR
python3 test_runner.py -f $BASE_DIR/config-B-5000.json
teardown

首次运行脚本时,数据会按预期写入输出文件:

size = 100

但是,在脚本完成执行之前,不会写任何其他内容。输出文件现在看起来像这样:

size = 5000
D/PerformanceTest( 1458): Loading time: 332874 ms
I/ActivityManager( 1843): Displayed com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +563ms

有两个问题:

  1. 已写入原始数据(“size = 100”)。由于-a中的tee切换。
  2. ,这不应该发生
  3. 即使命令在脚本外部执行时,中间结果也没有写入文件。
  4. 我做错了什么?

1 个答案:

答案 0 :(得分:0)

尴尬地回答我自己的问题。

问题是由于我使用>(覆盖文件)而不是>>(附加到它)。使用>>显然解决了这个问题。当我打字时,我仍然面对面。