当我执行 unison tours 2> / dev / null |在bash提示符下grep -A 2'< - ? - >',我得到了我正在寻找的确切输出:
*changed <-?-> changed Future Tours/File Clash Test.docx
local : changed file modified on 2013-06-05 at 16:24:40 size 10221 rw-rw----
bj-server... : changed file modified on 2013-06-05 at 16:23:53 size 10232 rw-rw----*
当我把它放入shell脚本时:
#!/bin/bash
tmp=$(unison tours 2> /dev/null | grep -A 2 '<-?->')
echo "$tmp" > /home/users/itsystem/test.log
......出来很奇怪。运行 more test.log ,我得到以下内容:
- Systems Sheets/Feedback She oup).xls | Past Tours/2012/CE0 12 Cherry (N...our Menus/Lijiang Tour Menus.xls - Past Tours/2012/UC041112 St - Past Tours/2012/UC081112 Lopata (N... Menus - UC081012 Lo 2/VC110912 Levin (VI... Menus - VC110912 Levin (VI).xlsx xlsx | Future Tours/2013 Futur / Inquiries/Outstanding/Terence Park... Itinerary (Trev changed changed Future Tours/File Clash Test.docx local : changed file modified on 2013-06-05 at 16:24:40 size 10221 rw-rw---- bj-server... : changed file modified on 2013-06-05 at 16:23:53 size 10232 rw-rw----
另一个废话来自哪里?
如果你只是运行 unison 那么你会得到一个动画一行输出,它会不断刷新,旋转 - \ | /显示工作文件夹,但是最终消失了。
如果我的grep在bash提示符下工作,为什么不在shell脚本中?
答案 0 :(得分:2)
动画线包含一系列控制字符,用于修改终端上的光标位置。当输出定向到文件时,无法实现相同的效果;你只需要记录所有写入终端的字节。