Как сделать цикл for с $1 - 1 циклами

Как сделать цикл for с $1 - 1 циклами

Я пытаюсь создать скрипт sh, который использует 'sed' для реализации алгоритма пузырьковой сортировки.

Я борюсь, как сделать цикл for

for n in $1
do
   echo $n
done

Как изменить тело цикла for, чтобы сделать только n-1циклы? Я пробовал, $1-1но это не работает. Он выведет часть строки и - 1.

решение1

n-1 цикловозначает, что последний пункт не следует рассматривать.

Используйте следующий подход (предполагая, что ваш входной аргумент всегда будет строкой подстрок, разделенных пробелами):

s=$1

for n in ${s:0:-2}
do 
    echo $n 
done

${s:0:-2}- срез элементов, содержащий все элементы, кроме последнего

    ^  ^
    |  | 
  from to

решение2

Использовать for i in "$@" ; do echo $i ; done

Вам не нужно указывать 1 доллар, это не обязательно.

Редактировать: Я не понял. Если вы хотите напечатать $1-1, echo $(( $i-1 )) если вы пытаетесь повторить i-1 раз, используйте модификацию этого:

for ((i=1; i<=3; i++))
{
  echo $x
}

Пожалуйста, опубликуйте свой скрипт «пузырьковой сортировки» полностью или уточните свой вопрос.

Связанный контент