programing

인터랙티브 프로그램으로 비인터랙티브하게 인수 전달

muds 2023. 4. 16. 15:57
반응형

인터랙티브 프로그램으로 비인터랙티브하게 인수 전달

Bash 스크립트를 사용하고 있습니다.read명령어를 사용하여 명령어에 대한 인수를 대화식으로 읽을 수 있습니다(예: 예/아니오 옵션).디폴트 옵션값을 인수로 전달하는 비인터랙티브스크립트로 이 스크립트를 호출하는 방법이 있나요?

인터랙티브한 스크립트에 전달해야 하는 옵션은 한 가지뿐만이 아닙니다.

여러 가지 방법

의견을 피하다

echo "yes
no
maybe" | your_program

파일에서 리다이렉트하다

your_program < answers.txt

여기 문서를 사용합니다(이 문서는 매우 읽을 수 있습니다).

your_program << ANSWERS
yes
no
maybe
ANSWERS

여기 문자열을 사용하다

your_program <<< $'yes\nno\nmaybe\n'

보다 복잡한 작업에는 다음과 같은 것이 있습니다.expect( http://en.wikipedia.org/wiki/Expect )를 참조해 주세요.기본적으로 사용자를 시뮬레이트하고 특정 프로그램 출력 및 관련 내용에 대한 대응 방법을 스크립트에 코드화할 수 있습니다.

이것은 다음과 같은 경우에도 효과가 있습니다.ssh패스워드를 접속하는 것을 금지하고 있습니다.

다음과 같이 데이터를 파일에 저장하고 다시 전송할 수 있습니다.

$ cat file.sh
#!/bin/bash

read x
read y
echo $x
echo $y

스크립트의 데이터:

$ cat data.txt
2
3

스크립트 실행:

$ file.sh < data.txt
2
3

한 가지 방법을 더 추가하고 싶습니다.다른 곳에서 찾았는데 아주 간단해예를 들어 명령어 execute_command에 대한 명령줄의 모든 프롬프트에 대해 yes를 전달하면 yes를 파이프에 연결할 수 있습니다.

yes | execute_command

그러면 yes/no 프롬프트에 대한 답변으로 yes가 사용됩니다.

또한 printf를 사용하여 입력을 스크립트에 파이프할 수도 있습니다.

var=val
printf "yes\nno\nmaybe\n$var\n" | ./your_script.sh

언급URL : https://stackoverflow.com/questions/14392525/passing-arguments-to-an-interactive-program-non-interactively

반응형