Invocar una línea de comando con espacios de una variable en un script bash [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Ejecución de comandos que contienen espacio en bash 6 respuestasPensé que sería fácil, pero ya perdí algunas horas en esto.
Quiero ejecutar el siguiente comando cmake desde un script bash. En una terminal escribiría
cmake -G "Unix Makefiles" .
y funciona. Si copio esto exactamente dentro del script bash, también funciona.
Pero el script está destinado a trabajar en múltiples plataformas, y podría ser "MSYS Makefiles" en lugar de "Unix Makefiles". Por lo tanto, quiero poner el comando en una variable, donde el contenido depende de la plataforma y ejecutarlo. Sin embargo, aquí es donde me quedé atrapado. Intenté todas las combinaciones de comillas simples / dobles que se me ocurrieron, pero no llegué a ninguna parte.
Lo que quiero es algo similar a las líneas
c="cmake . -G \"Unix Makefiles\""
exec $c
pero siempre resulta en alguna variación de lo siguiente:
CMake Error: Could not create named generator "Unix
Me doy cuenta de que podría hacer
if test [... this is unix ...]
cmake . -G "Unix Makefiles"
else
cmake . -G "MSYS Makefiles
fi
pero como esta llamada debe hacerse varias veces, prefiero evitarla.
¿Cualquier sugerencia