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 cat
lo anterior mantenemos la compatibilidad con POSIX. Esto significa, por ejemplo, que este comando funcionará bajo el shell predeterminado, /bin/sh
en Ubuntu, Debian y sistemas similares.
Respuesta2
Qué pasa
command argument --parameter=$(tr '\n' ',' < params.txt)