sed 's/\([0-9]\),\([0-9]\)/\1\2/g'
Это работает, только если есть по крайней мере два числа между двумя запятыми, поэтому
123,456,789 -> 123456789
12,34,56,78 -> 12345678
but
1,2,3,4,5,6 -> 12,34,56
Вы получаете bar
, потому что это то, что $1
после вашей операции shift
перед циклом.
Чтобы сдвинуть два позиционных параметра, используйте shift 2
. Однако может быть безопаснее очистить список позиционных параметров перед циклом, заменив shift
на set --
. Таким образом, вы не полагаетесь на то, что пользователь укажет правильное количество параметров. Некоторые оболочки будут выдавать диагностическое сообщение, если вы попытаетесь сместить больше значений, чем в списке, и если пользователь предоставит вам слишком мало или слишком много значений, они все равно будут в "$@"
.
Кроме того, вам нужно будет использовать set --
вместо обычного set
при установке позиционных параметров, как в этом случае, так и вообще, чтобы избежать случайного задания параметров оболочки или, как в этом случае, вызова set
с неверными параметрами.
set -- "$@" --build-arg "$line"