我有这个小代码来做一些数据处理.
#!/bin/sh
export DIR=`pwd`
if [ -d "$DIR" ]
then
for f in "$DIR"/HistoryData*; do
if find "$f" -newermt 2017-03-13 ! -newermt 2017-03-14
then
echo "$f" >> file
fi
done
else
echo "$DIR does not exists"
fi
for f in $(cat < $DIR/file);do
awk '/CO2/ && !/VAV/{ print $0 }' "$f" >> HistoryData_CO2
done
Run Code Online (Sandbox Code Playgroud)
在线echo "$f" >> file我试图将变量写入文件,但它也显示在屏幕上的值.如何在控制台上抑制值并只写入文件
这不是因为echo写入stdout,而是输出find写入它,只是压缩它/dev/null
if find "$f" -newermt 2017-03-13 ! -newermt 2017-03-14 > /dev/null
Run Code Online (Sandbox Code Playgroud)
这样,你只需要使用的返回码find在if-clause和该命令的输出不打印到stdout,但抑制的NULL设备.
但一般依靠输出find并不是使代码工作的好方法.
find "$DIR" -name 'HistoryData*' -newermt 2017-03-13 ! -newermt 2017-03-14 -print0 |
while IFS= read -r -d $'\0' line; do
echo "$line" >> file
done
Run Code Online (Sandbox Code Playgroud)