bash: переменная передачи xargs

как можно передать глобальную переменную скрипта команде xargs? Я попробовал так:

TEST=hallo2
echo "hallo" | xargs sh -c 'echo passed= test=$TEST' sh

выход:

passed=hallo test=

Я знаю, что мог бы использовать {} токен, но мне нужно сделать это таким образом!

Я использую bash.

3 ответов


принимать переменная $TEST из цитаты:

 TEST=hallo2
 echo "hallo" | xargs sh -c 'echo passed= test='$TEST sh

добавлено в качестве ответа, как предложил@chepner.

export переменная TEST:

export TEST=hallo2
echo "hallo" | xargs sh -c 'echo passed= test="$TEST"' sh

С GNU Parallel вы можете избежать некоторых цитат:

TEST=hallo2
echo "hallo" | parallel echo passed={} test=$TEST

GNU Parallel существует как пакет для большинства дистрибутивов, и рекомендуется использовать обычный менеджер пакетов для установки. Но если для вашей системы нет пакета, установка GNU Parallel занимает буквально 10 секунд:

wget pi.dk/3 -qO - | sh -x

смотрите вступительные видео, чтобы узнать больше:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1