bash 변수에 ">"를 포함할 수 있나요?

bash 변수에 ">"를 포함할 수 있나요?

현재 접근 방식:

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

관련 정보