Одинарные кавычки и переменные в оболочке Bourne

У меня есть эта команда, которую я пытаюсь выполнить в оболочке 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- команда.

1
задан 12.04.2011, 12:28

2 ответа

Я не уверен в том, что Вы пытаетесь сделать? Но если Вы хотите искать сценарии, названные 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
0
ответ дан 24.11.2019, 00:54

Сохраните одинарные кавычки, проблема вероятна, Вы не экспортировали переменную PARSEDATA.

export PARSEDATA
find ${DATADIR} -name "check_*" -type f -exec sh -c '$0 | ${PARSEDATA}' {} \; >> ${TMP_1}
0
ответ дан 24.11.2019, 00:54

Теги

Похожие вопросы