我有这个小代码来做一些数据处理。
#!/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
在行echo "$f" >> file
中我试图将变量写入文件,但它也在屏幕上显示值。如何在控制台上抑制值并只写入文件
答案 0 :(得分:5)
这不是因为echo
正在写入stdout
,而是写入find
的输出,只是将其抑制为/dev/null
if find "$f" -newermt 2017-03-13 ! -newermt 2017-03-14 > /dev/null
这样,您只需使用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