Pensei em contribuir um pouco para a discussão.
Já foi mencionado que a sintaxe usada em seu script é uma base e, portanto, não é portátil, mesmo que seja semelhante a C e seja bem compreendida por pessoas familiarizadas com java e C. De perguntar a minha própria pergunta em unix.stackexchange.com, também aprendi que a sintaxe como for i in $(seq 1 5)
gera um conjunto de números primeiro e então itera, o que pode ser um desperdício se você tiver um conjunto muito grande.
Uma maneira melhor de simular o comportamento semelhante ao C, que é portátil, é usar while
loop, com uma variável que pode ser incrementada. Por exemplo,
#!/bin/sh
number=0
while [ "$number" -lt 10 ]
do
printf "\t%d" "$number"
number='expr $number + 1 '
done
Isso funciona com bash, dash, zsh, ksh, mksh. . . ou basicamente qualquer shell relacionado ao shell bourne. Na verdade, eu tenho um livro do Unix System V de 1995, e eu testei o exemplo deles para o bourne shell e ele ainda funciona. O comportamento também é o de C-like para loop: você tem condição inicial, condição de teste dentro de while [ . . .]
e condição de atualização no final.
csh e tcsh têm sintaxe mais próxima da linguagem C, mas não é portável para outros shells, e eles não são recomendados para serem usados no script.
Adição :
Em relação à portabilidade de $ RANDOM, de acordo com a esta página no wiki do ubuntu, a geração de números aleatórios em traços deve depender usando /dev/urandom