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