У меня есть эта команда, которую я пытаюсь выполнить в оболочке Bourne для Соляриса 9.
find ${DATADIR} -name "check_*" -type f -exec sh -c '$0 | ${PARSEDATA}' {} \; >> ${TMP_1}
Моя проблема, переменная ${PARSEDATA}
не будет работать правильно, я попытался использовать двойные кавычки вокруг этого, затем проблема $0
название сценария, выполняющего этот код, не, файл определил местоположение использования find
команда.
Любые предложения для решения этого, вероятно, легкая проблема, значительно полезны.
Заранее спасибо.
Обновление: $0
название сценария, расположенного с помощью find
команда, переменная для ${PARSEDATA}
фильтр, расположенный где-нибудь в системе, которая изменяет вывод каждого расположенного сценария. Однако проблема, я, может казаться, не получаю обоих $0
и ${PARSEDATA}
расшириться правильно, также $0
разворачивает прекрасные одинарные кавычки использования или использование двойных кавычек ${PARSEDATA}
расширяется прекрасный, но затем $0
становится названием orginal сценария, который выполняет это find
- команда.
Я не уверен в том, что Вы пытаетесь сделать? Но если Вы хотите искать сценарии, названные check_* и затем выполнить его и передать его по каналу через $ программы {PARSE_DATA}, хорошо я предполагаю, что файл, расположенный находкой, не $0
но {}
Пример
найдите, что/var/ftp/mp3 - называют "*.mp3" - тип f - должностное лицо chmod 644 {} \; (Википедия)
Таким образом, я думаю, что можно использовать двойные кавычки:
find ${DATADIR} -name "check_*" -type f -exec sh -c '{} | ${PARSEDATA}' \; >> ${TMP_1}
Я попробовал успешно:
PG='sed s/Blah/Bleh/'
find . -name "check_*" -type f -exec sh -c "{} | $PG" \;
> Bleh Blah