
Я пытаюсь создать скрипт 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
}
Пожалуйста, опубликуйте свой скрипт «пузырьковой сортировки» полностью или уточните свой вопрос.