xargs를 사용하여 bash 스크립트 내에서 화면에 명령을 보내는 데 문제가 있습니다.

xargs를 사용하여 bash 스크립트 내에서 화면에 명령을 보내는 데 문제가 있습니다.

저는 현재 스트리밍 방송 스트림을 녹화하기 위해 간단한 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

귀하의 의견에 감사드립니다.

관련 정보