Bash函数只从字符串中写入文件中的一个单词
我正在编写一个脚本来清理工作系统上的日志文件。 在那里,我为维护创建了日志记录。 只有日志记录写一个单词而不是句子 这里是我使用的bash代码Bash函数只从字符串中写入文件中的一个单词,bash,Bash,我正在编写一个脚本来清理工作系统上的日志文件。 在那里,我为维护创建了日志记录。 只有日志记录写一个单词而不是句子 这里是我使用的bash代码 #!/bin/bash FILEDIR=/<file>/<directory> COPYDIR=/</ LOGDIR=/mnt/orabackup/??IPLUS/pmt/log/ INFO="[INF] :" INFO1="There are no files found
#!/bin/bash
FILEDIR=/<file>/<directory>
COPYDIR=/</
LOGDIR=/mnt/orabackup/??IPLUS/pmt/log/
INFO="[INF] :"
INFO1="There are no files found for cleanup."
INFO2="There are files found for cleanup."
ERROR="[ERR] :"
ERROR1="there was a error while running the script."
ERROR2="(Error while cleanup files whitout pid)"
ERROR3="(Error while cleanup large files whit pid)"
function writelog
{
string=$1
echo $(date +%Y%m%dT%H:%M:%S) ": ${string}" >> ${LOGDIR}script.log
}
for NOPID in $(ls -1 ${FILEDIR}*.trc|awk -F "_" '{print $3}'|awk -F "." '{print $1}' |uniq)
do
ps -ef|grep oracle|grep -v grep|grep -v LOCAL|grep -v "su -"|grep $NOPID > /dev/null
if [ $? = 1 ]
then
ls -1sh ${FILEDIR} | grep $NOPID > ${LOGDIR}${TIMESTAMP}deleted_logs_whitout_pid.log
rm -f ${FILEDIR}*$NOPID.tr?
elif [ $? = 0 ]
then
writelog ${INFO}${INFO1}
else
writelog ${ERROR}${ERROR1}${ERROR2}
fi
done
而不是整句话,比如:
20151224T08:15:28 : [INF] :There are no files found for cleanup.
我不知道我做错了什么。如果我附和这句话,它就行了。
有人能帮我吗?你可以使用
awk
:
awk '{print $1,$2,$3}' file.log
您可以使用
awk
:
awk '{print $1,$2,$3}' file.log
writelog
仅将其第一个参数写入日志。调用时需要引用变量,以便它们都位于单个参数中,而不是拆分为单独的单词
then
writelog "${INFO}${INFO1}"
else
writelog "${ERROR}${ERROR1}${ERROR2}"
fi
养成总是引用变量的习惯。很少需要对变量展开的结果执行分词或通配符展开。当您这样做时,您应该知道它。
writelog
只将其第一个参数写入日志。调用时需要引用变量,以便它们都位于单个参数中,而不是拆分为单独的单词
then
writelog "${INFO}${INFO1}"
else
writelog "${ERROR}${ERROR1}${ERROR2}"
fi
养成总是引用变量的习惯。很少需要对变量展开的结果执行分词或通配符展开。当您这样做时,您应该知道它。
writelog
只将$1
写入文件。这只是函数的第一个参数。请查看:writelog
仅将$1
写入文件。这只是函数的第一个参数。请看一看:谢谢Barmar,你的答案非常有用。谢谢Barmar,你的答案非常有用。