É possível substituir “then” por colchetes?

10

Aprendi primeiro como codificar em uma linguagem C e usando

if ( code )
then 
code
fi

torna muito difícil ler meu código (não pergunte por quê). Existe um substituto para then ?

Algo parecido com isto:

if ( code ) {
 code
}
fi
    
por 智障的人 25.06.2015 / 07:00

6 respostas

21

Não há substituto, mas você pode usar os dois se realmente precisar das chaves:

if true ; then {
    something
} fi

Isso usa um grupo de comandos desnecessário e explicitamente explicitado como o corpo do < um bloco href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_07"> then . Todos os comandos nas chaves serão executados apenas no shell atual quando o then for executado, exatamente como se as chaves não estivessem lá.

Eu não recomendaria esse estilo em geral ou para o código que alguém precisaria ler, mas ele dá as chaves que você quer, e isso funcionará se você estiver usando um editor que exige blocos apoiados ou algo parecido.

    
por 25.06.2015 / 07:10
15

Parece que você está procurando pelo shell C ( csh , tcsh , etc ...) . Esteja ciente de que os especialistas recomendam contra ele para a programação .

Não tenho certeza se a parte que você considera desagradável é o fato de que then está na linha seguinte? Em caso afirmativo, considere usar o seguinte estilo:

if condition; then
    stuff
fi

Eu tenho que admitir que os nomes da instrução de ortografia para trás, como fi para if e esac para case (mas não elihw para while !), são um pouco peculiares. Mas esse é o Bourne shell padrão, a sintaxe de shell mais portátil que você pode usar.

    
por 25.06.2015 / 07:05
9

Talvez isso seja mais fácil para os olhos:

[ condition ] && {
   # statement 1
   # statment 2
   # ...
}

Além disso, é só se acostumar com isso. Use os idiomas da linguagem.

    
por 25.06.2015 / 12:33
5

O seguinte está próximo de lá. E estranho.

: if; { code; } && {
    code
}

Eu pessoalmente nunca gostei do ...

if true; then
more;fi

... forma eu mesmo. Eu gosto quando as palavras de controle lideram . Sempre pareceu estranho para mim que a forma ...;then prevalecente tivesse surgido.

if    this && that
then  do these things too
else  i will probably get upset
fi

É quase totalmente oposto ao seu pedido, mas é outra maneira de fazer isso. Você também pode adicionar todos os redirecionamentos desejados à linha fi , conforme necessário, e eles serão aplicados a todo o bloco.

    
por 25.06.2015 / 07:37
0

Aqui está uma maneira:

[ "$var" = "find" ] && echo "found"

é equivalente a:

if [ "$var" = "find" ]; then
  echo "found"
fi
    
por 25.06.2015 / 08:06
-2

Eu sempre uso:

if (code); then
   code;
fi

Provavelmente não é exatamente o que você quer, mas é um pouco mais c.

    
por 25.06.2015 / 07:06