그래서 누군가가 사용자가 암호 입력을 입력했는지 테스트하는 데 조건 (들)을 사용하는 방법을 보여주었습니다. 나는 한 걸음 더 나아가 그들의 예를 들고 싶다. 적어도 루프라고 생각한다.사용자 입력이 무언가가 될 때까지
여기에 자신의 예는 다음과 같습니다
read -s -p "Enter new password: " NEWPASS
if test "$NEWPASS" = ""; then
echo "Password CAN NOT be blank re-run sshd_config"
exit 1;
fi
대신 좀가 될 때까지 입력을 요구 유지하려는 스크립트를 종료의.
사용자가 새 암호를 입력하고 변수 값을 채울 수있는 기회 부여 (지금 가기 예제를 사용하여) 을 :
는이 같은 성명을 만들고 싶어하지만, 내가 잘못을하고 있었다. 값이 무한 값을 기입하도록 사용자에게 요청하는 동안 널
read -s -p "Enter new password:" NEWPASS
echo ""
다음 부분은,이 값을 포함하는지 변수를 체크한다.
while [[ -z "$NEWPASS" ]]; do
echo ""
echo "Password CAN NOT be blank"
echo ""
read -s -p "Enter new password:" NEWPASS;
echo ""
done
이 줄은 다른 파일에서 사용하는 변수 집합을 포함하는 파일을 검색합니다. 그런 다음 PASS를 포함하는 행 = 위해 파일을 검색합니다. (*. * 무엇을 의미) 다음 PASS = $ newpass로는 ($ newpass로 변수 인)
sed -i -e"s/^PASS=.*/PASS=$NEWPASS/" /etc/sshd.conf
모든 도움을 주셔서 감사 기록, 내가에 갈거야 이것을 사용하고 그것으로부터 배웁니다.
당신은 당신의 대답을 분해하고 설명 할 수 있을까요? 나는 거의 jist를 얻는다, 나는 다만 그것을 완전히 이해하고 싶다. – Geofferey
예. '-z string'은 string이 비어있는 것을 의미하고 while [[-z "$ NEWPASS"]]는'$ NEWPASS'가 비워 질 때까지 while 루프를 실행하는 것을 의미합니다. 정기적 인 읽기 명령은 while 루프 내에 있습니다. 사용자가 'Enter'키를 누르면 '$ NEWPASS'는 여전히 비어 있고 프롬프트가 다시 나타납니다. '$ NEWPASS'가 비어 있지 않기 때문에 모멘트 사용자는 루프를 종료하는 동안 값을 입력합니다. 더 자세한 것은'man test'를 실행하십시오. – anubhava