开发者

Multiple unary operators in an if statement [duplicate]

This question already has an answer here: Using the && operator in an if statement (1 answer) Closed 3 years ago.

Is it possible to have multiple unary operators in if statements.. Here is the code snippet which is giving me error.

Please correct the code here.

if [ -f $input_file ] -a [ -f $output_file ] -a [ -f $log_file ] ]
then
    ### Some Cod开发者_StackOverflow社区e here
fi


if [ -f "file1" -a -f "file2" -a "file3" ]; then
   #some code
fi


If you use Bash's double-bracket, you can do this:

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

which I find cleaner to read than other options shown here (but that's subjective). However, it has other advantages.

And, as ghostdog74 shows, you should always quote variables containing filenames.


You can see the [ ... ] operator only as a shortcut for test .... The options are used th same way.

So in your case you could either write the ghostdog74 way or :

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


[ is a command, not part of the if statement. As such you should pass it each of the appropriate arguments instead of trying to incorrectly run it as you have.

if [ arg1 arg2 arg3 arg4 ... ]
then
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜