
Estou tentando criar um script sh que usa 'sed' para criar o algoritmo bubblesort
Estou lutando, como fazer for loop
for n in $1
do
echo $n
done
Como posso alterar o corpo do loop for para fazer apenas n-1
ciclos? Eu tentei isso $1-1
, mas não funciona. Irá imprimir parte da string e - 1.
Responder1
n-1 ciclossignifica que o último item não deve ser considerado.
Use a seguinte abordagem (assumindo que seu argumento de entrada sempre será uma sequência de substrings delimitadas por espaço):
s=$1
for n in ${s:0:-2}
do
echo $n
done
${s:0:-2}
- fatia de itens contendo todos os itens, exceto o último
^ ^
| |
from to
Responder2
Usar
for i in "$@" ; do echo $i ; done
Você não precisa cotar $ 1, não é necessário.
Editar: eu entendi mal. Se você deseja imprimir $1-1, echo $(( $i-1 ))
se estiver tentando iterar i-1 vezes, use uma modificação disto:
for ((i=1; i<=3; i++))
{
echo $x
}
Por favor, poste seu script 'bubblesort' completo ou esclareça sua dúvida.