if语句中的多个一元运算符

时间:2010-02-22 09:13:42

标签: bash if-statement syntax unary-operator

if语句中是否可以有多个一元运算符..以下是给我错误的代码片段。

请在此处更正代码。

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

4 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:7)

如果你使用Bash的双支架,你可以这样做:

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

我发现阅读比这里显示的其他选项更清晰(但这是主观的)。但是,它有other advantages

并且,正如 ghostdog74 所示,您应该始终引用包含文件名的变量。

答案 2 :(得分:4)

您只能将[ ... ]运算符视为test ...的快捷方式。选项以相同的方式使用。

因此,在您的情况下,您可以编写 ghostdog74 方式或:

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

答案 3 :(得分:1)

[是一个命令,不是if语句的一部分。因此,您应该传递每个适当的参数,而不是试图错误地运行它。

if [ arg1 arg2 arg3 arg4 ... ]
then