Confusamente, [
é na verdade um programa, também é conhecido como teste (1) . Você não precisa colocar seu comando grep em [
. Se você fosse usar [
para algo, você precisa separar o colchete esquerdo com um caractere de espaço [ foo == bar ]
A sintaxe if é: help if
if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
The 'if COMMANDS' list is executed. If its exit status is zero, then the
'then COMMANDS' list is executed.
O comando que você quer é mais provável assim.
if grep -q -e "-----BEGIN PGP MESSAGE-----" pgp.txt; then
...
...
fi