2

BASHで検証を行っています

if [ !( ( -e $f ) || ($# -lt 2) || ( -d $f ) ) ]; then
    exit 0
fi

ファイルが存在するかどうか、それがディレクトリであるか、または十分な引数がターミナルを介して渡されるかどうかを確認しようとしています。これを行うことはできますか、それとも別の方法で行う必要がありますか?

4

2 に答える 2

1

ここには少なくともいくつかの問題があるようです。

  • [[テストの構文には、従来のsingleコマンドではなく、より新しいdoubleコマンドが必要になります[

  • 最後にが欠けていますfi。(私はあなたのためにこれを編集しました、それを変更した人のおかげで。)

  • テストの感覚が逆転しているかもしれませんが、よくわかりません。スクリプトの残りの部分がどのように見えるかによって異なります。

于 2013-03-26T18:44:40.060 に答える
1

私はあなたの質問からあなたが普通のファイルではないものを拒否したいということを集めました。その場合、-eの代わりに-fを使用すると、ディレクトリのテストは冗長になります。

if [[  ! -f "$f" || $# -lt 2 ]]; then
    exit 0
fi

ちなみに、これがエラー終了の場合は、ほとんどの場合、0〜0以外で終了する必要があります。出口1の方が良いでしょう。

于 2013-03-26T19:22:58.653 に答える