• 締切済み

[if文]ファイル/ディレクトリの存在有無について

[if文]ファイル/ディレクトリの存在有無について教えて下さい。 「あるディレクトリ配下にファイル、ディレクトリがない場合、 エラーを出力。」を目的に以下のシェルを作成しました。 if [! -f $DIR/* -a ! -d $DIR/*] nodataend fi しかし、あるディレクトリ配下に複数のファイルが存在すると正常に処理されません。 この場合、どのような条件で指定すればいいのでしょうか。 個人的には条件で指定している*が問題ではないかと思います。 宜しくお願いします!

みんなの回答

  • ky072
  • ベストアンサー率60% (85/140)
回答No.2

おっしゃるとおり、「$DIR/*」が空白を含む複数のファイルパスに展開されるのが、エラーの原因だと思います。 単純に、ディレクトリが空か、で判断して良いなら、 if [ 1 -eq $(find ${DIR} -maxdepth 0 -empty|wc -l) ] then nodataend fi 厳密に、ファイルとディレクトリのみをチェックするなら(named pipeなどの存在は無視)、 if [ 0 -eq $(find ${DIR} -mindepth 1 -type f -or -type d|wc -l) ] then nodataend fi のような形でいかがでしょう。ちなみに「*」や「ls」を使う場合と異なり、ドットで始まるファイルもチェック対象になります。

回答No.1

変則的ですが if [ "`ls`" = "" ] then echo "から" else echo "あり" fi

関連するQ&A