![쉘 스크립트에서 새 세션으로 매개변수 전달](https://linux55.com/image/9684/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%83%88%20%EC%84%B8%EC%85%98%EC%9C%BC%EB%A1%9C%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%20%EC%A0%84%EB%8B%AC.png)
USB 포트에서 파일로 직렬 데이터를 기록하는 스크립트를 작성 중이며 다음과 같이 데이터를 기록하는 데 script
사용 하고 있습니다.picocom
sudo script -a -c 'sudo picocom /dev/ttyUSB0 | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/device1.log
잘 작동하고 있습니다. 지금까지 openPort
호출할 수 있도록 스크립트 로 래핑하고 싶습니다 .openPort device1 USB0
sudo script -a -c 'sudo picocom /dev/tty"${2}" | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/${1}.log
불행히도 COM 포트는 열리지 않습니다. from 을 사용하는 대신 script
실행할 새 세션을 시작하는 것이 문제인 것 같습니다 . 인수를 올바르게 전달할 수 있는 방법이 있습니까?sudo picocom /dev/tty"{2}"
openPort
답변1
작은따옴표 안의 모든 내용은 확장되지 않으므로 따옴표에서 이 매개변수를 제거하세요.
sudo script -a -c 'sudo picocom /dev/tty'"${2}"' | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/${1}.log
Shell은 모든 부분을 하나로 모으는 일을 담당합니다.