Multiple unary operators in an if statement [duplicate]

試著忘記壹切 提交于 2019-12-22 04:21:34

问题


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 Code here
fi

回答1:


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



回答2:


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.




回答3:


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



回答4:


[ 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


来源:https://stackoverflow.com/questions/2309849/multiple-unary-operators-in-an-if-statement

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!