Как получить значение {} в оболочке? - PullRequest
0 голосов
/ 23 мая 2018
find . -name "*.network" -o -name "*.index" | xargs -n 1 -I {} -P 5 sh -c "ncols=3; filename={}; echo $filename"

Я хочу получить имя файла, хранящееся в переменной.Установив filename = {} и echo filename, я ничего не выводил в консоли.

Так как я хочу использовать многопоточность.xargs необходим в моем скрипте.

Я использую одинарные кавычки, как предложено Айкастеллом.Но я хочу использовать awk внутри кавычек.Что мне делать с одинарными кавычками внутри кавычек?\ s не работает.

Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Поскольку $filename находится в двойных кавычках, оболочка подставляет его перед тем, как запустить трубу.Другими словами: filename в операторе echo относится к переменной в вызывающей оболочке, а не в подоболочке, которую вы открываете с помощью sh -c.

Следовательно, используйте одинарные кавычкивместо этого!

0 голосов
/ 23 мая 2018

Вы можете сделать что-то вроде этого:

for FILENAME in $(find . -name "*.network" -o -name "*.index")
do
   # process $FILENAME
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...