在将输出重定向到文件时&&做了什么?

Mer*_*glu 1 unix bash redirect

我找到了一个bash 脚本,列出了文件开头或结尾带有空行的所有文件.

for f in `find . -type f`; do 
  for t in head tail; do 
    $t -1 $f  |egrep '^[  ]*$' >/dev/null && echo "blank line at the $t of $f" ;
  done; 
done
Run Code Online (Sandbox Code Playgroud)

我想将输出传递给一个文件.我把echo线改为:

$t -1 $f  |egrep '^[  ]*$' >/dev/null && echo "blank line at the $t of $f" > blank_lines.log
Run Code Online (Sandbox Code Playgroud)

但这没效果.

我想问一下符号的&&作用以及为什么上面的行没有将输出传递给文件.

izo*_*ica 5

这不会重定向输出,只有当第一个成功时才会添加另一个命令来执行.即command1 && command2表示执行command1,如果成功执行command2.当且仅当两个命令都成功时,执行此语句的结果才是成功.