Я пытаюсь написать сценарий оболочки «echo.by», который повторяет его аргументы столько раз, сколько пользователь выбирает. Например, если пользователь вводит в командной строкеUNIX Shell Scripting Output
echo.by 5 Play it again, Sam. <return>
Сценарий должен напечатать
Play it again, Sam.
Play it again, Sam.
Play it again, Sam.
Play it again, Sam.
Play it again, Sam.
Однако, я не знаю, как печатать только Play это снова, Сэм и исключить первый аргумент. $*
команда печатает все, так что я в конечном итоге с
5 Play it again, Sam.
5 Play it again, Sam.
5 Play it again, Sam.
5 Play it again, Sam.
5 Play it again, Sam.
Мой сценарий должен быть в состоянии удовлетворить любой сценарий после первого числа, так что я не могу просто сказать оболочке эхо $2 $3 $4 $5
.
Вот мой сценарий:
count = 0
while test $count -lt $1
do
echo $*
count = `expr $count + 1`
done
FYI - 'счетчик = 0' работает программа' count' с аргументами '= 'и' 0'. Если вы хотите выполнить задание, вам необходимо оставить пробел: 'count = 0'. Кроме того, '((count ++))' гораздо проще писать, чем 'count = $ ((count + 1))' (опять же, без пробелов вокруг '='). –
... также - котировки; использовать их. 'echo '$ *" ', а не' echo $ * '. Если кто-то передал в ваших аргументах «*», вы бы не захотели, чтобы его заменили на список файлов в текущем каталоге, не так ли? Угадайте, что произойдет, если вы не процитируете свои аргументы ... –