While loop no shell

0

Eu quero fazer um tempo ... declaração loop no meu script Shell como:

while [ $line < $line_number ]; do
    echo $line
done

Mas há um erro. Eu acho que é porque eu escrevi em bash code. Mas preciso fazer isso no modo sh . Como eu posso fazer isso? Obrigado!

    
por Ziyaddin Sadigov 26.02.2014 / 19:54

1 resposta

4

Você precisa usar

while [ $line -lt $line_number ]; do
    echo $line
done

ou

while [[ $line < $line_number ]]; do
    echo $line
done

Dissociação [fonte]

Único [] são testes de condição compatíveis com o posix shell.

O dobro [[]] é uma extensão do padrão [] e é suportado pelo bash e por outros shells (por exemplo, zsh, ksh). Eles suportam operações extras (assim como as operações posix padrão). Por exemplo: || em vez de -o e regex correspondente a =~ . Uma lista mais completa de diferenças pode ser encontrada na seção manual do manual sobre construções condicionais .

Use [] sempre que quiser que seu script seja portável entre os shells. Use [[]] se você quiser expressões condicionais não suportadas por [] e não precisar ser portável.

    
por souravc 26.02.2014 / 20:05