나는 약간의 어려움에 직면했습니다. 몇 가지 후위 표현식을 제공하고 5초 이내에 해결책을 기대하는 애플리케이션이 있습니다. 솔루션이 없으면 종료되고, 그렇지 않으면 추가 표현식을 제공합니다.
인터페이스는 다음과 같습니다:
<some text>
<expression>
<expecting my result>
<next expression>
<expecting my result>
등.
표현식이 하나만 있는 경우 tail -1
명령을 사용하여 마지막 줄을 가져와 표현식을 가져오고 dc
명령을 사용하여 이를 평가하고 싶습니다. 그러나 (지금까지) 표현식의 개수를 알 수 없기 때문에 사용할 수 없으며 읽은 문자열이 숫자(예: 표현식)로 시작하지 않을 때까지 일부 루프를 수행해야 합니다.
따라서 두 가지 스크립트를 사용하고 싶습니다.
- 애플리케이션을 시작하면 항상 텍스트 출력이 file1로 전송되고 백그라운드에서 실행됩니다(스크립트 1).
- 스크립트 file1(script2)의 마지막 줄을 읽고 솔루션을 평가한 후 file2(script2)로 보냅니다.
- file2에서 솔루션을 읽고, file2를 삭제하고(다음 솔루션을 위해), 앱을 포그라운드로 가져오고 솔루션을 보낸 다음 앱을 백그라운드로 보냅니다(스크립트 1)
그러나 이것은 나에게 약간 복잡해 보입니다.
이 문제를 해결하기 위해 절차를 단순화하는 방법에 대한 제안 사항이 있습니까?
답변1
필요하지 않으므로 명명된 파이프를 살펴보는 것이 좋습니다.문서누구에게나.
그러나 다음과 같습니다.
mkfifo mypipe
script1 <mypipe | grep --line-buffered '^[0-9]' | dc >mypipe
당신이 원하는 것에 가까워야합니다. 그러나 이는 입력에 실제로 표현식 결과를 인쇄하는 p
데 필요한 명령이 있다고 가정합니다.dc