tee - 如果文件不存在则不执行任何操作

时间:2015-07-15 15:13:23

标签: bash tee

我尝试将echo命令保存到日志文件中:

echo "XXXXX" | tee -a ./directory_with_logs/my_script.log

当文件my_script.log存在时,它运行良好

XXXXX

(XXXXX也被写入my_script.log)

当my_script.log不存在时,我得到了类似的东西

tee: ./directory_with_logs/my_script.log: No such file or directory
XXXXX

我试过if else过程检查文件是否存在,然后写入日志

function saveLog(){ 
if [[ -e "./directory_with_logs/my_script.log" ]] ; then 
tee -a ./directory_with_logs/my_script.log 
fi ; } 
echo "XXXXX" | saveLog

但是当文件不存在时也会出错,xterm中没有任何反应,没有回显命令

如何在xterm中打印并写入日志文件echo命令,

或仅在日志文件不存在时在xterm中打印?

请帮助:)

2 个答案:

答案 0 :(得分:3)

您的代码无法正常工作的原因是,当文件不存在时,它不会消耗标准输入。您可以通过在cat分支中添加else调用来解决此问题:

saveLog() { 
  if [[ -e "./directory_with_logs/my_script.log" ]] ; then 
    tee -a ./directory_with_logs/my_script.log 
  else
    cat
  fi 
}

答案 1 :(得分:-3)

你不需要tee来附加一个>>的文件

试试这个:

echo "XXXXX" >> ./directory_with_logs/my_script.log