Задать вопрос
Arkasha18
@Arkasha18
SysAdmin

Как заставить bash обработать больше 9 переменных?

имею проблему, не могу понять как решить
в первом варианте все переменные обрабатываются нормально
root@localhost:/etc/cron_user# ./test.sh y1 y2.ru y3.ru y4.ru y5.ru y6.ru y7.ru y8.ru y9.ru y10.ru
y1 y2.ru y3.ru y4.ru y5.ru y6.ru y7.ru y8.ru y9.ru y10

во втором $1 путается с $10 из-за точки в значении и обрабатывается как $1+"0"
root@localhost:/etc/cron_user# ./test.sh y1.ru y2.ru y3.ru y4.ru y5.ru y6.ru y7.ru y8.ru y9.ru y10.ru
y1.ru y2.ru y3.ru y4.ru y5.ru y6.ru y7.ru y8.ru y9.ru y1.ru0

код простой

root@localhost:/etc/cron_user# cat test.sh
#!/bin/bash

echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
root@localhost:/etc/cron_user#
  • Вопрос задан
  • 495 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
egor_nullptr
@egor_nullptr Куратор тега Linux
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Можно использовать сдвиг, работает при любом количестве аргументов:
#!/bin/bash

while (( "$#" )); do
echo -n "$1 "
shift
done
echo
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Всегда берите переменные в ${ } - это избавляет от множества подобных ошибок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы