비슷한 질문이 많다는 것을 알고 있지만 답변을 찾을 수 없습니다.
다른 스크립트를 호출하기 위해 소스 스크립트의 이 지점에 도달하기 위한 몇 가지 if 및 검사가 있습니다.
source ./call.sh
대상 스크립트에서 사용자로부터 사용자 이름을 얻고 싶습니다.
#!/bin/bash
passDir="/etc/passwd"
while true
do
#propmt for username
read -p "Enter username : " username
egrep "^$username" $passDir >/dev/null
if [ $? -eq 0 ]; then
echo "$username exists!"
else
userName=$username
break
fi
done
하지만 내가 아무 것도 입력할 때까지 기다리지는 않습니다. Ctrl+CI를 누르지 않는 한 루프에 들어가 인쇄가 존재합니다. 누군가 이 작업을 수행하는 방법에 대한 조언을 해줄 수 있다면 매우 감사하겠습니다. 내 대상 스크립트에는 사용자로부터 입력을 받으라는 메시지가 많이 있습니다. 대상 스크립트만 실행하면 제대로 작동합니다.
답변1
추가 스크립트를 작성하고 source command
사용해야 하는 스크립트를 호출하고 상호 작용해야 합니다 expect interpreter
. 예를 들면 다음과 같습니다.
#!/usr/bin/env expect
send 'username\r'
물론 스크립트에 무언가를 전달하고 사용해야 합니다 return status
.