При следовании за этим вопросом я использовал следующую команду в сценарии удара:
find ${svn_root} -maxdepth 2 -type d -exec bash -c 'if svnlook info "$1" &>/dev/null ;then echo"$1" >>${log_file} ;svnadmin verify "$1" 2>>{log_file} ;fi' _ {} \;
Обе переменные определяются в начале сценария. Переменный $svn_root соответственно расширен, но переменная $log_file не.
Я вижу, что переменная не передается ни в один из -exec bash -c
команда, я принимаю поэтому, что это - подоболочка? Я могу скользить log_file=/path/to/log ;
перед echo
часть строки, но такие твердые коды, что часть команды, если я заменяю переменную в сценарии, не изменяя его в находке, управляет, чтобы я произвел к двум отдельным файлам журнала!
Я могу импортировать/экспортировать ту переменную в ту подоболочку (если вот что это значит)?
Существует главным образом два пути:
Передача это как второй аргумент оболочке
find ... -exec bash -c '...' _ {} "$log_file" \;
И затем Вы используете "$2"
вместо ${log_file}
внутренняя часть сценарий
Передача это через среду:
log_file=$log_file find ... -exec bash -c '...' _ {} \;
BTW, это не подоболочка.
Необходимо смочь видеть такие переменные в подоболочке при использовании двойных кавычек с bash -c ""
.
А более простой метод был бы ко всего export
log_file
переменная в Вашем основном сценарии следующим образом:
export log_file
Используя
find ${svn_root} -maxdepth 2 -type d -exec bash -c 'if svnlook info "$0" &>/dev/null ;then echo"$0" >> "$1" ;svnadmin verify "$0" 2>> "$1" ;fi' {} "$log_file" \;
Вам нужно $0
и $1
, потому что это не функция или сценарий.