8

ifステートメントに複数の単項演算子を含めることは可能ですか。エラーが発生するコードスニペットは次のとおりです。

ここでコードを修正してください。

if [ -f $input_file ] -a [ -f $output_file ] -a [ -f $log_file ] ]
then
    ### Some Code here
fi
4

4 に答える 4

10
if [ -f "file1" -a -f "file2" -a "file3" ]; then
   #some code
fi
于 2010-02-22T09:16:49.160 に答える
8

Bashのダブルブラケットを使用する場合は、次のことができます。

if [[ -f "$input_file" && -f "$output_file" && -f "$log_file" ]]

ここに示されている他のオプションよりも読みやすくなっています(ただし、これは主観的なものです)。ただし、他にも利点があります。

また、ghostdog74が示すように、ファイル名を含む変数は常に引用符で囲む必要があります。

于 2010-02-22T13:13:58.957 に答える
5

[ ... ]演算子は、のショートカットとしてのみ表示できます test ...。オプションは同じように使用されます。

したがって、あなたの場合、ghostdog74の方法を書くか:

if [ -f $input_file ] && [ -f $output_file ] && [ -f $log_file ]
then
### Some Code here
fi
于 2010-02-22T09:30:18.540 に答える
1

[はコマンドであり、ifステートメントの一部ではありません。そのため、誤って実行しようとするのではなく、適切な引数をそれぞれ渡す必要があります。

if [ arg1 arg2 arg3 arg4 ... ]
then
于 2010-02-22T09:16:56.687 に答える