現在のアプローチ:
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
好みの方法は機能しません:
hello > hello2
コードの重複を避けるために変数として定義したい
$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
$CURRENT_TO_OUT 出力:
CP1 hello
答え1
コマンドラインは通常、変数が展開された後に再解釈されません。eval
必要な行動を得るために電話する必要があります。
あなたは実際にXYの問題。コードの重複を防ぐには、代わりにシェル関数を使用してください。
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