bash: несколько унарных операторов в операторе if
возможно ли иметь несколько унарных операторов в операторах if.. Вот фрагмент кода, который дает мне ошибку.
пожалуйста, исправьте код здесь.
if [ -f $input_file ] -a [ -f $output_file ] -a [ -f $log_file ] ]
then
### Some Code here
fi
спасибо Киран!--2-->
4 ответов
Если вы используете двойную скобку Bash, вы можете сделать это:
if [[ -f "$input_file" && -f "$output_file" && -f "$log_file" ]]
который я считаю более чистым для чтения, чем другие варианты, показанные здесь (но это субъективно). Тем не менее, это другие преимущества.
, а как ghostdog74 показывает, вы всегда должны указывать переменные, содержащие имена.
вы можете увидеть [ ... ]
оператор только как ярлык для test ...
. Параметры используются таким же образом.
Так что в вашем случае можно написать ghostdog74 или :
if [ -f $input_file ] && [ -f $output_file ] && [ -f $log_file ]
then
### Some Code here
fi
[
- это команда, а не if
заявление. Таким образом, вы должны передать ему каждый из соответствующих аргументов, а не пытаться неправильно запустить его, как у вас есть.
if [ arg1 arg2 arg3 arg4 ... ]
then