Несколько унарных операторов в, если оператор [дубликат]

8
задан codeforester 24 March 2019 в 18:41
поделиться

4 ответа

if [ -f "file1" -a -f "file2" -a "file3" ]; then
   #some code
fi
10
ответ дан 5 December 2019 в 07:34
поделиться

[ - это команда, а не часть оператора if. Поэтому вы должны передать ей каждый из соответствующих аргументов, а не пытаться выполнить ее некорректно, как вы сделали.

if [ arg1 arg2 arg3 arg4 ... ]
then
1
ответ дан 5 December 2019 в 07:34
поделиться

Вы можете увидеть оператор [...] только как ярлык для test ... . Параметры используются таким же образом.

Итак, в вашем случае вы можете написать способ ghostdog74 или:

if [ -f $input_file ] && [ -f $output_file ] && [ -f $log_file ]
then
### Some Code here
fi
4
ответ дан 5 December 2019 в 07:34
поделиться

Если вы используете двойные скобки Bash, вы можете сделать следующее:

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

который я считаю более удобным для чтения, чем другие варианты, показанные здесь (но это субъективно) . Однако у него есть другие преимущества .

И, как показывает ghostdog74 , вы всегда должны заключать в кавычки переменные, содержащие имена файлов.

7
ответ дан 5 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: