Domanda

Come dovrebbe essere risolto command variabile per ottenere un comportamento corretto?

#!/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 prima chiamata è sbagliata, secondo - giusto

$> ./test.sh 
Two
--another_option=Four Five Six
È stato utile?

Soluzione

Bash FAQ Entry #50: "Sto cercando di mettere un comando in una variabile, ma i casi complessi falliscono sempre!"

Tl; dr: usa un array.

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

Altri suggerimenti

Non è possibile correggere la variabile. Ma tu puoi:

eval $command
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top