Указание разделенных запятыми параметров командной строки на основе строк текстового файла

Указание разделенных запятыми параметров командной строки на основе строк текстового файла

Я хочу выполнить команду типа:

command argument --parameter=param1,param2,param3

где param1, param2, param3 могут быть любым количеством параметров из файла params.txt, каждый на одной строке.

Я могу создать правильный список параметров с помощью

echo $(cat common.modules) | tr " " ","

Но попытка

command argument --parameter=$(cat params.txt) | tr " " ","

и его очевидные варианты терпят неудачу, вероятно, потому, что я не могу заставить работать что-то вроде этого:

echo $($(cat params.txt) | tr " " ",")

Любая помощь будет высоко оценена.

решение1

Давайте рассмотрим эту команду из вопроса:

command argument --parameter=$(cat params.txt) | tr " " ","

Это запускает команду command argument --parameter=$(cat params.txt)и передает ее вывод в tr " " ",". Это не то, что вам было нужно.

Пытаться:

command argument --parameter="$(echo $(cat params.txt) | tr " " "," )"

Здесь, echo $(cat params.txt)вызывает разбиение слов на содержимое params.txt. Это приводит к тому, что все параметры разделяются пробелами. Затем, tr " " ","заменяет пробелы запятыми.

Обратите внимание, что при использовании catвыше мы поддерживаем совместимость с POSIX. Это означает, например, что эта команда будет работать в оболочке по умолчанию, /bin/sh, в Ubuntu и Debian и подобных системах.

решение2

Как насчет

command argument --parameter=$(tr '\n' ',' < params.txt)

Связанный контент