Sim, sua versão padrão não é padrão POSIX, como a pergunta que você vinculou a anotações. No entanto, o seguinte é:
if some-command args; then ...
Eu diria que esta é a única forma portável de if
, já que é isso que é if
. if
faz algo se some-command
(que pode ser uma função, um shell embutido ou um executável 1 ) retorna 0
para os argumentos e a entrada em que é executado.
Quando você executa if [ ]
ou if [[ ]]
, [ ]
e [[ ]]
são programas ou componentes internos do shell que retornam 0
se a condição for verdadeira. Se você converter [
para test
, verá que está sempre executando o formulário sem os colchetes:
if [ ... ]
# same as
if /bin/test ...
1 Para ser mais preciso, vamos ver como o if
construct está definido :
The if command shall execute a compound-list and use its exit status to determine whether to execute another compound-list.
The format for the if construct is as follows:
if compound-list then compound-list [elif compound-list then compound-list] ... [else compound-list] fi
Note que uma lista composta não é a o mesmo que um comando composto .