我有下面的脚本,该脚本将在目录下搜索文件夹名称时附加文件awslogs.conf
,但是如果我重新执行此脚本,则会再次附加。我该如何避免这样做?
for NAME in $(ls -1p /home/ec2-user/src/ |grep -v "^_" | grep -v "/$" |cut -d. -f1);
do
sudo tee -a /etc/awslogs/awslogs.conf << END
[$NAME]
datetime_format = %b %d %H:%M:%S
file = /var/log/airflow/$NAME/*/*/*.log
buffer_duration = 5000
log_stream_name = $NAME
initial_position = start_of_file
log_group_name = CLOUDWATCH_LOGS
END
done
sudo service awslogsd start
sudo systemctl enable awslogsd
答案 0 :(得分:0)
默认情况下,tee
命令将替换文件的内容。 -a
会替代附加。如果要替换内容,只需从命令中删除-a
。
如果仅在文件不包含内容的情况下想要附加,那是完全不同的主张。例如,您可以将内容作为多行字符串拉出,然后使用GNU grep
检查整个内容:
contents="[$NAME]
datetime_format …"
if ! grep --fixed-strings --null --quiet "$contents" /etc/awslogs/awslogs.conf
then
tee -a …