Как изменить аргумент командной строки в Bash?



есть ли способ изменить аргументы командной строки в сценарии Bash. Скажем, например, скрипт Bash вызывается следующим образом:



./foo arg1 arg2  


есть ли способ изменить значение arg1 в скрипте? Скажем, что-то вроде



="chintz"
422   2  

2 ответов:

вы должны сбросить все аргументы. Чтобы изменить, например,:

$ set -- "${@:1:2}" "new" "${@:4}"

в принципе вы setвсе аргументы для их текущих значений, за исключением одного(ов), которые вы хотите изменить. set -- указано по POSIX 7.

The "${@:1:2}" обозначение расширяется до двух (отсюда 2 в нотации) позиционные аргументы, начиная со смещения 1 (т. е. ). Это стенография ибо "" "" в этом случае, но это гораздо более полезно, когда вы хотите заменить, например,"".

оптимизируя для удобочитаемости и ремонтопригодности, вам может быть лучше назначить и к более значимым переменным (я не знаю,input_filename = и output_filename = или что-то еще), а затем перезаписать одну из этих переменных (input_filename = 'chintz'), оставляя вход в скрипт без изменений, если он нужен в другом месте.

Comments

    Ничего не найдено.