Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash tee-如果文件不存在';不要什么都不做_Bash_Tee - Fatal编程技术网

Bash tee-如果文件不存在';不要什么都不做

Bash tee-如果文件不存在';不要什么都不做,bash,tee,Bash,Tee,我尝试将echo命令保存到日志文件: echo "XXXXX" | tee -a ./directory_with_logs/my_script.log 当文件my_script.log存在时,它运行良好 XXXXX (XXXXX也被写入my_script.log) 当我的_script.log不存在时,我得到了类似的东西 tee: ./directory_with_logs/my_script.log: No such file or directory XXXXX 我尝试了if-els

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

echo "XXXXX" | tee -a ./directory_with_logs/my_script.log
当文件my_script.log存在时,它运行良好

XXXXX
(XXXXX也被写入my_script.log)

当我的_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中并没有任何操作,并没有echo命令

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

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


请帮助:)

您不需要附加>>所用的文件

试试这个:

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

代码无法工作的原因是,当文件不存在时,它不会使用标准输入。您可以通过在
else
分支中添加
cat
调用来修复它,如下所示:

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

问题是文件不存在还是目录不存在?因为它们不是一回事
tee
应该可以创建文件,但不会创建目录。就是这样。同样相关。另外,简单地执行
echo“XXXXXX”>.\directory\u with_logs/my_script.log
???为什么要调用
tee
?他可能正在使用
tee-a
,因为他希望看到输出,以及附加到文件中。