получается, что между if
и [
должен быть пробел. Кроме того, я вставил ключевые слова then
и fi
.
Сработало следующее.
#!/bin/bash
cat input$1 | ./prog$1 > output$1 && if [ "$2" != "" ]; then diff output$1 expected$1; fi
EDIT:
как прокомментировано ниже (и в другом ответе), это может быть элегантно сокращено до:
cat input$1 | ./prog$1 > output$1 && [ "$2" != "" ] && diff output$1 expected$1
В этом случае мне даже не нужно помнить ни одно из правил использования конструкции if
:)