인터랙티브 프로그램으로 비인터랙티브하게 인수 전달
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
'programing' 카테고리의 다른 글
셸에서 마지막 10개의 명령어 이력을 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
---|---|
XAML DataGridColumn을 DataGrid 전체로 채우려면 어떻게 해야 합니까? (0) | 2023.04.16 |
WPF Value Converter - 변환할 수 없는 값의 표준 반환 (0) | 2023.04.16 |
SQL에서 랜덤 행을 요청하는 방법 (0) | 2023.04.16 |
* 경유로 숨김 파일을 포함한 모든 파일을 부모 디렉토리로 이동하는 방법 (0) | 2023.04.16 |