문자 장치를 처리하려면 bash 스크립트에서 heredoc을 사용하십시오. EOF 오류

문자 장치를 처리하려면 bash 스크립트에서 heredoc을 사용하십시오. EOF 오류

스크립트:

#!/bin/bash

interface=enp4s0

mac_address=$(ip link show $interface | grep ether | awk '{print $2}')


cat > /dev/usb/lp0 <<EOF
SIZE 30 mm,90 mm,CLS,TEXT 200,40,0,90,2,2,"MAC Address of $interface:",TEXT 140,40,0,90,2,2,"$mac_address",PRINT 1,END
>EOF 

TSPL 언어를 사용하여 문자 장치로 인쇄하고 있습니다. 문제는 인쇄되는 내용을 큰따옴표로 묶어야 한다는 것입니다. 예를 들어 TEXT 200,40,0,90,2,2,"Some text to be printed". 또한 텍스트에 변수를 포함하고 싶습니다.

echo "SIZE 30 mm,90 mm,CLS,TEXT 200,40,0,90,2,2,"MAC Address of $interface:",TEXT 140,40,0,90,2,2,"$mac_address",PRINT 1,END > /dev/usb/lp0중첩된 큰따옴표가 TSPL의 명령을 중단시키기 때문에 작동하지 않습니다.

heredoc에서 발생하는 오류는 다음과 같습니다.

warning:here-document at line 8 delimited by end-of-file (wanted `EOF')

답변1

@thrig가 제안한 대로 >EOF이렇게 변경하면 EOF문제가 빠르게 해결됩니다.

cat > /dev/usb/lp0 <<EOF
SIZE 30 mm,90 mm,CLS,TEXT 200,40,0,90,2,2,"MAC Address of $interface:",TEXT 140,40,0,90,2,2,"$mac_address",PRINT 1,END
EOF

앞으로는 좋은 구문 강조 기능을 갖춘 IDE에서 bash 스크립트를 작성하는 것이 좋습니다. VS Code는 차이점을 빠르게 알아차렸습니다. 건배!

관련 정보