Преобразование строки в аргумент в bash - PullRequest
1 голос
/ 28 мая 2020

Я хочу сформировать аргумент для хвоста с помощью xargs.

"string" | xargs -I '{}' tail -F *{}*

Это приводит к tail "*{}*", который не работает. Как удалить кавычки и превратить их в действительный аргумент для tail? т.е. tail *string*

1 Ответ

1 голос
/ 28 мая 2020

* интерпретируется оболочкой Bourne (расширение имени пути) в момент анализа вашей команды, прежде чем она будет фактически выполнена, НЕ в момент выполнения tail.

Если вы хотите, чтобы команда, созданная xargs, подлежит расширению имени bash, вам необходимо выполнить bash:

echo "string" | xargs -I '{}' bash -c "tail -F *'{}'*"

Проблема безопасности: если у вас нет контроля над именами файлов, отправленных на xargs, то со специально созданными именами файлов вы можете случайно выполнить некорректные команды.

...