我有一个非常简单的 ksh 脚本,在某些时候我想写入日志文件。我在两个地方使用以下命令......
print "Directory listing 1:\n" > ${LogFile}
ll >> ${LogFile}
(注:第二次使用该命令时打印目录清单2)
我的问题是,当我事后查看日志文件时,只有第二次执行这些命令才起作用!因此,没有“目录列表 1”和随附的“ll”输出。
我已经对脚本进行了测试和测试,以确保我的逻辑没有任何问题。我在每个命令之前添加了打印测试命令,这样我就知道它们会被执行。
我是否做错了什么或者我没有意识到?
答案1
>
每当您使用(第一行)进行重定向时,${LogFile}
都会将其截断为 0,然后写入。如果我理解正确的话,你会执行上述两次,第一个内容会被第二个内容覆盖。
你要做的就是:
> ${LogFile} # This just truncates if there was anything there, writes nothing
...
echo "First round" >> ${LogFile}
ls -l >> ${LogFile}
...
echo -e "\nSecond round" >> ${LogFile}
ls -l >> ${LogFile}
...