티스토리 뷰
expect prompt에서는 아래와 같은 명령어가 성공합니다.
expect1.1> send [cat hello]
world
expect1.2>
hello 라는 파일의 내용인 world가 정상적으로 출력 됩니다.
하지만 shell script 내부에서 사용하는 경우는 어떨까요?
#!/bin/sh
expect << EOF
send [cat hello]
EOF
동일한 내용으로 수행했을 때 결과는 아래와 같습니다.
invalid command name "cat"
while executing "cat hello"
invoked from within "send [cat hello]"
shell script안에서 위와 같이 expect로 shell 명령어를 사용하려면 exec를 사용해야 한다고 합니다.
#!/bin/sh
expect << EOF
send [exec cat hello]
EOF
근본적인 이유는 좀 더 봐야겠지만 이로써 expect를 더 잘 활용할 수 있겠네요.
'개발 > Shell Script' 카테고리의 다른 글
[sh] 디렉토리 사이즈 확인 (0) | 2016.02.26 |
---|---|
[sh] 터미널 명령어 결과를 배열로 사용 (0) | 2016.02.02 |
[sh] expect prompt와 shell script 안에서의 expect 차이 (4) | 2016.01.20 |
[sh] 문자열 포함 여부 검사 (0) | 2015.12.15 |
[sh] "$*" 과 "$@"의 차이 (2) | 2015.11.30 |
[sh] 랜덤 숫자 뽑기 (0) | 2015.11.24 |
댓글
-
진우 리눅스 자동화를 공부중인데요
bash 쉘 스크립트보다 expect가 더 자동화에 적합한가요?
차이를 잘 모르겠습니다.. 2022.02.21 01:09 -
Jaeyeon Baek 보통 자동화에는 bash, shell, python 등이 주로 사용됩니다. expect는 셸 환경에서 인터랙션 처리를 할 때 주로 사용됩니다 :)
예를들어 ssh 로그인을 하려고 명령어를 입력하고 엔터를 치면 패스워드를 물어볼텐데 그때 패스워드를 자동으로 입력한다던지요. 2022.02.21 13:32 신고 -
진우 아 그렇다면
리눅스 자동화는
bash 쉘 스크립트와 expect 를 조합해서 사용하는게 좋겠네요
답변 감사합니다~!! 2022.02.22 19:38 -
Jaeyeon Baek 도움이 되셨기를 바랍니다! 감사합니다 :) 2022.02.23 13:21 신고
- Total
- 1,669,347
- Today
- 349
- Yesterday
- 345