Especificación de parámetros de línea de comando separados por comas basados ​​en líneas de archivos de texto

Especificación de parámetros de línea de comando separados por comas basados ​​en líneas de archivos de texto

Quiero ejecutar un comando como:

command argument --parameter=param1,param2,param3

donde param1, param2, param3 puede ser cualquier número de parámetros provenientes de un archivo params.txt, cada uno en una línea.

Puedo crear ver una lista correcta de parámetros con

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

Pero intentándolo

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

y sus variantes obvias fallan, probablemente porque no puedo hacer que algo como esto funcione:

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

Cualquier ayuda muy apreciada.

Respuesta1

Veamos este comando de la pregunta:

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

Esto ejecuta el comando command argument --parameter=$(cat params.txt)y canaliza su salida a tr " " ",". Eso no es lo que necesitabas.

Intentar:

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

Aquí, echo $(cat params.txt)se realiza la división de palabras en el contenido de params.txt. Esto da como resultado que todos los parámetros estén separados por espacios. Luego, tr " " ","reemplaza los espacios con comas.

Tenga en cuenta que al utilizar catlo anterior mantenemos la compatibilidad con POSIX. Esto significa, por ejemplo, que este comando funcionará bajo el shell predeterminado, /bin/shen Ubuntu, Debian y sistemas similares.

Respuesta2

Qué pasa

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

información relacionada