Como fazer um loop for com $1 - 1 ciclos

Como fazer um loop for com $1 - 1 ciclos

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-1ciclos? 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.

informação relacionada