"else"が空の "then"句の後に来ると、Bash構文エラーが発生します。

次のスクリプトは実行されませんが、構文エラーが発生するのはなぜですかelse

LOGS3_DIR=~/logs
if [ -d "$LOGS3_DIR" ]; then
 cd
 cd "$LOGS3_DIR"
 echo "$LOGS3_DIR"
 for filename in `find "." -mtime 1 -type f`
  do
  if lsof "$filename" > /dev/null
  then
    # file is open
  else
    echo "deleting $filename"
    rm "$filename"
  fi
 done
fi

ベストアンサー1

一つ作ってみたいと思いますねアクションなしファイルがすでに開いている場合は、空の:コマンドを1つ追加する必要がありますbash

if lsof "$filename" > /dev/null; then
  # file is open
  :
else
  printf 'deleting %s\n' "$filename"
  rm -- "$filename"
fi

これを使用しないと、:コードbashは解析されず、このようなエラーが表示されますbash: syntax error near unexpected token 'else'

おすすめ記事