awk :установка переменных среды непосредственно из скрипта awk

первый пост здесь, но скрывался целую вечность. я целую вечность гуглил, но не мог найти то, что мне нужно (множество тем, занимающихся темами, которые не запрашивают того, что тема предлагает для этого... ). не новичок в awk или сценариях, просто немного заржавел:)

Я пытаюсь написать awk-скрипт, который будет устанавливать значения env оболочки при запуске -, чтобы другой bash-скрипт мог подобрать и использовать его позже. я не могу просто использовать стандартный вывод из awk, чтобы сообщить об этом значении, которое я хочу установить (, то есть «экспортировать что угодно = awk cmd here» ), так как это уже направлено в «файл результатов», который создает awkscript (плюс я в любом случае иметь более одной переменной для экспорта в окончательный код ).

В качестве примера тестового сценария для демонстрации моей проблемы:

echo $MYSCRIPT_RESULT          # returns nothing, not currently set
echo | awk -f scriptfile.awk   # do whatever, setting MYSCRIPT_RESULT as we go
echo $MYSCRIPT_RESULT          # desired: returns the env value set in scriptfile.awk 

внутри scriptfile.awk я безуспешно пытался ()

1/ )построение и выполнение специальной строки напрямую:

{
  cmdline="export MYSCRIPT_RESULT=1"
  cmdline
}

2/ )с помощью системной функции:

{
  cmdline="export MYSCRIPT_RESULT=1"
  system(cmdline)
}

... но они не работают. Я подозреваю, что эти 2 команды создают подоболочку в оболочке, из которой выполняется awk, и делают то, что я прошу (, что подтверждается касанием файлов в качестве теста ), но после завершения «cmd»/системных вызовов подоболочка умирает, к сожалению, забирая все, что я установил с ней -, поэтому мои изменения настроек env не придерживаются точки зрения «вызывающего awk».

поэтому мой вопрос: как вы на самом деле устанавливаете переменные env в awk напрямую , чтобы вызывающий процесс мог получить доступ к этим значениям env после завершения выполнения awk? это реально возможно?

кроме специальных / системных способов, описанных выше, которые, как я доказал, не работают для меня,я не понимаю, как это можно сделать (, кроме как записать эти значения в «случайный» файл где-нибудь, чтобы их взял и прочитал вызывающий скрипт, который в любом случае немного грязный ), следовательно, помогите!

все идеи/предложения/комментарии приветствуются!

7
задан user1603289 16 August 2012 в 13:50
поделиться