사용자에게 프롬프트에 일부 데이터를 입력하도록 요청하는 명령을 사용하는 스크립트를 만들려고 합니다.
스크립트에 포함시키고 싶다고 가정해 보겠습니다 git push
. (이것이 최선의 방법은 아니라는 것을 알고 있지만 이런 식으로 묻는 것이 무엇인지 모두가 이해할 것입니다.)
git push
따라서 콘솔에서 사용할 때 사용자 이름과 비밀번호를 묻습니다. git
쉘 스크립트에서 호출할 때 이를 전달하고 둘 다 쉘 변수로 저장하려면 어떻게 해야 합니까?
그것은 다음과 같이 보일 것입니다
#!/bin/bash
git push
$user
$password
답변1
가장 쉬운 방법은 외부 명령으로 파이프하는 것 같습니다.
printf "%s\n%s\n" "$user" "$password" |command_expects_username_and_password
$user
$password
그러면 및 뒤에 개행 문자가 오는 내용이 출력되고 출력이 stdin
외부 프로세스로 리디렉션됩니다. 이 프로세스는 대화형으로 호출할 경우 사용자가 해당 순서대로 사용자 이름과 비밀번호를 입력해야 합니다.
좀 더 복잡한 작업을 수행하고 싶다면 다음을 살펴보는 것이 좋습니다.예상되는스크립트.
노트Kusalananda가 말했듯 stdin
이 이는 프로그램이 단말 장치에서 직접이 아닌 이 정보를 읽는 경우에만 작동하며(그러나 이는 인증 정보를 요청할 때 일반적인 것 같습니다) 실제로 적용할 때는 작동하지 않습니다 git
(귀하가 다음과 같이 제공했습니다). 사용 예).
답변2
당신이 찾고 있는 도구는 입니다 expect
.
https://linux.die.net/man/1/expect
TTY와 자동으로 상호작용하는 도구입니다.
안전하지 않다는 점을 명심하세요. 비밀번호 없이 github에 푸시하려면 ssh를 사용해야 합니다.
git remote add origin [email protected]:name/repo
원격 "소스"가 이미 저장소에 있을 수도 있습니다.
SSH 공개 및 개인 키를 설정하고 이를 SSH 에이전트에 추가한 후에는 푸시 또는 풀을 위해 비밀번호를 입력할 필요가 없습니다.