순차적으로 실행되는 zsh 스크립트 작성

순차적으로 실행되는 zsh 스크립트 작성

나는 Big Sur를 사용하고 있으며 패키지(패키지는 NASA의 스펙트럼 피팅 패키지인 XSPEC)를 실행한 다음 해당 패키지의 명령을 실행하는 스크립트를 작성하려고 합니다. 먼저 XSPEC패키지를 연 다음 문제를 실행하고 싶습니다. Enter 키 data 1:1 /Users/me/Desktop/Drive/my\ data/spectrum2.pha를 사용하여 두 줄을 분리하면 패키지가 종료될 때까지 첫 번째 줄이 실행되지 않는다고 가정하기 때문에 두 번째 줄이 실행되지 않습니다. XSPEC version: 12.11.1 Build Date/Time: Thu Jul 1 04:09:17 2021 XSPEC12>XSPEC 시작이 완료될 때마다 인쇄됩니다 (세 개의 개별 라인에 인쇄됨). 이전 줄이 인쇄되면 다음 단계로 진행하는 if 문을 만드는 방법이 있나요?

답변1

~에서XSPEC 문서:

XSPEC은 명령 기반 대화형 프로그램입니다. XSPEC12>입력이 필요할 때마다 프롬프트가 표시됩니다.

이는 XSPEC 프로그램이 사용자가 시도하는 방식으로 수행되도록 의도되지 않았음을 의미합니다. 또한 단락의 나머지 부분을 참고하십시오.

화살표 키를 사용하여 명령 및 인라인 편집을 호출합니다. XSPEC은 Tcl을 사용자 인터페이스로 사용하여 루프, 조건, 파일 I/O 등을 제공합니다. Tcl 구문에 대한 자세한 내용은 부록 A 및 해당 링크를 참조하세요.

특히 XSPEC은 Tcl을 사용합니다. Tcl 자체는 스크립팅 언어입니다. 문서의 문구는 zshXSPEC를 비대화식으로 수행하려고 시도하는 대신 Tcl 스크립트를 작성하고 사용하여 XSPEC 프로그램과 해당 작업을 지시/제어할 수 있음을 시사합니다. 대신 데이터 세트를 로드하고 처리한 후 결과를 인쇄하는 Tcl 스크립트를 작성하세요.

이를 수행하는 방법에 대한 자세한 내용은 XSPEC 매뉴얼을 읽어야 합니다. 매뉴얼은 또한 이 작업을 수행하기 위해 Tcl을 배우고 사용하는 방법에 대한 링크와 정보를 제공합니다.

추가하도록 편집됨: 나도 지금 전체 data ...라인을 생각하고 있습니다.XSPEC 명령(Tcl). 그러므로 그것은아니요zsh그것은 단지 명령일 뿐입니다. 어쨌든, 당신이 이것을 하려는 방식은 완전히 잘못되었습니다. data ...외부 스크립트 파일이나 쉘 리디렉션을 포함하여 다양한 방법으로 XSPEC 명령을 XSPEC에 로드/실행할 수 있습니다 . 이 작업을 수행하는 방법을 알아보려면 다시 XSPEC 설명서를 읽어보세요.

답변2

XSPEC깔끔한 접근 방식은 이것이 무엇이든 로드가 완료되었음을 알 수 있는 방법이 있는지 알아내는 것입니다 . 이에 대해 세부정보를 제공하지 않으셨기 때문에 죄송하지만 도움을 드릴 수 없습니다.

간단하고 해킹적인 방법은 백그라운드에서 첫 번째 명령을 실행하고 다음 명령을 실행하는 사이에 몇 초 동안 기다리도록 스크립트에 지시하는 것입니다. 도구는 sleep이므로 다음과 같은 것을 원합니다.

#!/bin/zsh

XSPEC &
## Now wait 5 seconds
sleep 5
## And continue
data 1:1 /Users/me/Desktop/Drive/my\ data/spectrum2.pha
wait # for XSPEC to finish

sleep항상 작동하는 가장 짧은 값을 찾기 위해 시간을 투자할 수 있습니다 .

답변3

다음 명령을 사용하여 대화형 터미널 애플리케이션에 대한 입력을 자동화할 수 있습니다.예상되는MacOS용 스크립트는 다음을 통해 설치할 수 있습니다.스스로 만든.

당신은 이런 것을 원할 것입니다

#!/usr/bin/expect -f

set timeout -1
spawn XSPEC

expect "XSPEC12>"
send -- "data 1:1 /Users/me/Desktop/Drive/my\ data/spectrum2.pha"

# Some expectation which can detect the completion of the previous step
# Further Commands

관련 정보