2 ответов:
вы должны сбросить все аргументы. Чтобы изменить, например,
:
$ set -- "${@:1:2}" "new" "${@:4}"
в принципе вы setвсе аргументы для их текущих значений, за исключением одного(ов), которые вы хотите изменить.
set --
указано по POSIX 7.The
"${@:1:2}"
обозначение расширяется до двух (отсюда2
в нотации) позиционные аргументы, начиная со смещения1
(т. е.). Это стенография ибо
"" ""
в этом случае, но это гораздо более полезно, когда вы хотите заменить, например,""
.
оптимизируя для удобочитаемости и ремонтопригодности, вам может быть лучше назначить
и
к более значимым переменным (я не знаю,
input_filename =
иoutput_filename =
или что-то еще), а затем перезаписать одну из этих переменных (input_filename = 'chintz'
), оставляя вход в скрипт без изменений, если он нужен в другом месте.
Comments