ファイルチェックスクリプトにはどのような問題がありますか?

ファイルチェックスクリプトにはどのような問題がありますか?

ファイルやディレクトリが見つからない場合、スクリプトの最後に何も表示されない理由を理解できません。

echo -n "Please enter a filename or directory: "
read filename
if [ -z "$filename" ]; then
  echo "You did not enter anything!"
  exit 1
fi
if [ -e "$filename" ]; then
  if [ -f "$filename" ]; then
    echo "You entered a file."
  elif [ -d "$filename" ]; then
    echo "You entered a directory."
  else
    echo "You did not enter a valid file or directory."
  fi
fi
exit

私のコードに何が問題なのかわかりません。無効または存在しないファイルまたはディレクトリを入力すると、エコーは表示されません。

ベストアンサー1

ifステートメントをインデントするためにスクリプト形式を再指定しました。これにより、最後の状況が真で偽の場合echoにのみ発生することがより明確になります。ユーザーが存在しないファイルまたはディレクトリを入力すると失敗します。-f-d-f

前のセクションの修正を検討してください。

if [ -e "$filename" ]; then
  if [ -f "$filename" ]; then
    echo "You entered a file."
  elif [ -d "$filename" ]; then
    echo "You entered a directory."
  fi
else
  echo "You did not enter a valid file or directory."
fi

最初のステートメントの実際の部分はifより早く終了します(によってelse)。これにより、存在しないファイル/ディレクトリに実行するコードセクションがあります。

おすすめ記事