![xargs를 사용하여 bash 스크립트 내에서 화면에 명령을 보내는 데 문제가 있습니다.](https://linux55.com/image/74483/xargs%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EB%82%B4%EC%97%90%EC%84%9C%20%ED%99%94%EB%A9%B4%EC%97%90%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EB%B3%B4%EB%82%B4%EB%8A%94%20%EB%8D%B0%20%EB%AC%B8%EC%A0%9C%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
저는 현재 스트리밍 방송 스트림을 녹화하기 위해 간단한 bash 스크립트를 작성 중입니다. 출근하고 출근 준비를 하는 과정에서 제가 가장 좋아하는 아침 방송을 30분 정도 놓치게 되므로 출근하기 약 15분 전에 녹화를 시작하도록 업무용 컴퓨터의 크론 일정에 설정하도록 이 스크립트를 작성했습니다. .
다음 스크립트 발췌는 작동하지 않습니다.
echo ${FILEFULLPATH} | xargs -t screen -dmS ${STATION_NAME}Stream mplayer ${STATION_URL} -dumpstream -dumpfile
그러나 실행 xargs -t
출력은 제대로 작동합니다. screen -ls
화면에 screen -r
명령이 실제로 실행 중임을 표시합니다. 출력 명령은 다음과 같습니다.
screen -dmS RadioXStream mplayer http://radiostream.net/ -dumpstream -dumpfile ~/radio/radiostream_06102015-1316.mp3
나는 그것을 사용했고 set -x
모든 것이 괜찮아 보입니다. 스크립트 실행 후 실행 시 screen -ls
생성되어야 할 화면이 존재하지 않습니다.
나는 이 명령을 Minecraft 서버용으로 작성한 이전 스크립트를 기반으로 하고 있습니다. 유일한 주요 차이점은 상대 디렉터리를 따옴표로 묶기 때문에 여기에서 파일 경로에 xargs를 사용한다는 것입니다.'~/radio/file.mp3'
답변1
문제는 확실히 xargs를 사용하여 발생합니다. 모든 변수를 변수에 넣는 대신 명령줄에 붙여넣어 문제를 해결했습니다.
screen -dmS ${STATION_NAME}Stream mplayer ${STATION_URL} -dumpstream -dumpfile ${DIRECTORY}${STATION_NAME}_${DATETAG}.mp3
귀하의 의견에 감사드립니다.