Доступ к argv на уровне файла из функции - PullRequest
1 голос
/ 09 июля 2020

У меня есть сценарий, например:

echo 'Hello world' # etc

function fun
   if test 1 -gt 0
      echo "$argv[1]"
   end
end

# lots of code in between

fun

Я называю этот файл ./file foo --bar. Я хочу, чтобы fun печатал --bar. Вместо этого он ничего не печатает, потому что argv, содержащий --bar (ie, argv файла), маскируется argv функции, которая не получает никаких входных данных.

Теоретически я мог бы передать argv к функции, как в fun $argv. Однако это очень неприятно включать в каждый вызов функции (я делаю обширные ссылки на argv в этом файле). Есть ли способ получить доступ к переменной области видимости файла argv из функций в файле?

1 Ответ

1 голос
/ 09 июля 2020

Внешний argv затеняется внутренним argv - глобальной переменной, затененной локальной переменной. Это невозможно изменить.

Есть множество способов обойти это, в том числе то, что я бы порекомендовал: используйте set -g fileargv $argv один раз перед выполнением функций, а затем используйте $fileargv в своих функциях.

...