【问题标题】:shell cant capture output in file using > and >>shell 无法使用 > 和 >> 捕获文件中的输出
【发布时间】:2014-09-24 06:36:39
【问题描述】:

我知道>>>,但无法捕获以下代码的输出。 我有 3 个文件,我想使用 CAT 一个一个打开文件。 我会使用GREP 搜索特定的字符串/消息,如果找到PASS 否则FAIL。 代码正在运行,但无法在文件中获得输出。

XXXXXXXXXX/XXX/XXX/postprocessing$ ls
demo.txt  tag.txt  tc1_adblog.txt  tc2_adblog.txt  tc3_adblog.txt


XXXXXXXXXX/XXX/XXX/postprocessing$ cat tc1_adblog.txt | grep  'ActivityRecord{4306a670 u0 com.example.android.notepad/.NotesList t9}' && echo "Test case 1: Pass" || echo "Test case 1: FAIL" >> result.txt
I/Timeline( 1002): Timeline: Activity_windows_visible id: ActivityRecord{4306a670 u0 com.example.android.notepad/.NotesList t9} time:12020671
Test case 1: Pass


XXXXXXXXXX/XXX/XXX/postprocessing$ ls
demo.txt  tag.txt  tc1_adblog.txt  tc2_adblog.txt  tc3_adblog.txt

【问题讨论】:

    标签: android linux shell


    【解决方案1】:

    >> result.txt 仅在|| 之后应用于echo。您需要像这样对整个命令进行分组:

    s='ActivityRecord{4306a670 u0 com.example.android.notepad/.NotesList t9}'
    { grep -qF "$s" tc1_adblog.txt && echo "Test case 1: Pass" || echo "Test case 1: FAIL"; } >> result.txt
    
    • 使用grep -F匹配固定字符串
    • 使用grep -q 避免grep 的输出
    • 避免无用cat

    【讨论】:

      【解决方案2】:
      && echo "Pass" >> result.txt || echo "Fail" >> result.txt
      
      (grep "string" && echo "Pass" || echo "Fail") >> result.txt
      

      【讨论】:

        猜你喜欢
        • 2018-07-07
        • 2010-09-26
        • 2011-12-14
        • 2015-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多