Pregunta

¿Cómo se debe solucionar? command variable para obtener un comportamiento correcto?

#!/bin/bash

function f ( )
{
    echo "$2"
}
command="f --option=\"One Two Three\" --another_option=\"Four Five Six\""
$command

f --option="One Two Three" --another_option="Four Five Six"

La primera llamada es incorrecta, segundo - correcto

$> ./test.sh 
Two
--another_option=Four Five Six
¿Fue útil?

Solución

Entrada de preguntas frecuentes de Bash #50: "Estoy tratando de poner un comando en una variable, ¡pero los casos complejos siempre fallan!"

Tl; dr: usa una matriz.

command=(f --option="One Two Three" --another_option="Four Five Six")
"${command[@]}"

Otros consejos

No puede arreglar la variable. Pero puedes:

eval $command
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top