Poderia “” ser incluído em uma Variável bash?

2

Abordagem atual :

sudo awk 'BEGIN{printf "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<hello>\n\t<world>\n";} {print "\t\t",$0}END{printf "\t </world>\n</hello>\n"}' hello > hello2

A abordagem preferida não funciona :

hello > hello2 gostaria de ser definido como uma variável para evitar duplicação de código

$CURRENT_TO_OUT=hello > hello2

echo "CP1" $CURRENT_TO_OUT

sudo awk 'BEGIN{printf "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<hello>\n\t<world>\n";} {print "\t\t",$0}END{printf "\t </world>\n</hello>\n"}' $CURRENT_TO_OUT

Saída $ CURRENT_TO_OUT:

CP1 hello

    
por 030 02.07.2014 / 14:07

1 resposta

5

Após a expansão da variável, a linha de comando normalmente não é reinterpretada. Você precisaria de chamadas para eval para o comportamento desejado.

Você realmente tem um problema XY . Para evitar duplicações de código, use uma função de shell:

convert_func(){
   echo "CP1 $1" > "$2"
   sudo awk 'BEGIN{printf "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<hello>\n\t<world>\n";} {print "\t\t",$0}END{printf "\t </world>\n</hello>\n"}' "$1" > "$2"
}

convert_func input1 targetfile1
convert_func input2 targetfile2
    
por 02.07.2014 / 14:16