Есть ли способ изменить аргументы командной строки в сценарии Bash? Например, сценарий Bash вызывается следующим образом:
./foo arg1 arg2
Есть ли способ изменить значение arg1 в скрипте? Что-то типа:
$1="chintz"
bash
command-line-arguments
Шрирам
источник
источник
eval
на передней линии в этом .Оптимизируя читаемость и удобство обслуживания, вам может быть лучше назначить
$1
и$2
более значимые переменные (я не знаю,input_filename = $1
иoutput_filename = $2
или что-то в этом роде), а затем перезаписать одну из этих переменных (input_filename = 'chintz'
), оставив входные данные для скрипта без изменений, если это нужен в другом месте.источник
Я знаю, что это старый, но я нашел ответ thkala очень полезным, поэтому я использовал эту идею и немного расширил ее, чтобы позволить мне добавить значения по умолчанию для любого аргумента, который не был определен, например:
# set defaults for the passed arguments (if any) if not defined. # arg1=${1:-"default-for-arg-1"} arg2=${2:-"default-for-arg-2"} set -- "${arg1}" "${arg2}" unset arg1 arg2
Надеюсь, это кому-то пригодится.
источник