Acho que as dicas do Aurélio são muito boas, apesar de discordar de algumas poucas:
» O sistema só usa variáveis em letras maiúsculas, portanto se vc usar maiúsculas, é grande a possibilidade de criar uma que tenha homônima no sistema (já vi isso ocorrer diversas vezes e é um erro enjoado de localizar). Uso somente a 1ª letra de cada palavra em maiúscula para facilitar o entendimento. É muito mais fácil entender que ContLin é um contador de linhas do que contlin;
» Acho que o uso de colchetes no lugar do test, torna o código mais elegante e mais legível;
» Se vc pensar bem, verá que o operador lógico || equivale a um else sem if. Assim sendo, sou amplamente favorável ao seu uso. Como vc prefere?
if test ! -d dir
then
mkdir dir
cd dir
fi
ou
[ -d dir ] || mkdir dir
cd dir
Para uma pessoa ser considerada programador em Shell tem de saber que [..] representa o cmd test e tem de conhecer o uso de operadores básicos como || e &&.
Por falar nisso, acho muito interessante que um cara para programar em python, java, perl, PHP, ... passa um tempão aprendendo a linguagem para se aventurar a escrever or primeiros programas básicos. Em Shell, o cara vai na Internet, procura algo parecido com o que ele precisa e sai ajustando por tentativa e erro até chegar a um resultado parecido com o que ele queria.
A pergunta que mais escuto de meus amigos (todos cobras criadas em Linux) é:
- Julio dá para fazer em Shell ...
Nem espero a pergunta terminar, vou logo dizendo:
- A pergunta não é essa. A pergunta é: qual é a melhor forma de fazer iso, assim, assim em Shell, pq sempre existirão diversas formas de executar a mesma tarefa.
É muito raro alguém se dedicar a aprender Shell e o usos desses operadores, de expansão de parâmetros e coisas mais rebuscadas é que separam o profissional do curioso.