읽기 작업 단축

읽기 작업 단축

이것이 제가 현재 read하고 있는 일이며 훌륭하게 작동합니다. 하지만 단축하고 싶습니다.

echo "Please save your DB root password:" && read -s dbrp
echo "Please save your DB user password:" && read -s dbup

이것이 내가 그것을 단축하려고 시도했지만 완전히 실패한 방법입니다(힌트는 나에게 중요합니다):

echo "Please save your DB passwords (root, then non-root):" && read -s dbrp && echo "\n" && read -s dbup

이미 내가 원하는 방식으로 정렬되어 있지만 다음과 같은 이유로 마음이 편하지 않습니다.

  1. read -s하나가 아닌 두 개의 명령이 있습니다 .
  2. echo /n나누기 행 없이 중단하려면 중단 행을 사용해야 합니다 .

이를 개선할 수 있는 방법이 있나요?

고쳐 쓰다

나는 거기를 사용하여 실수를 저질렀습니다 echo( add 외에 \n. read자체 프롬프트 추가 옵션도 있습니다:

read -sp "What's your DB root password?" dbrp
read -sp "What's your DB user password?" dbup

답변1

변수 이름을 변경하고 코드를 bash 전용으로 만들려는 경우( -s및 에서 사용 가능; 프롬프트에만 in 과 같은 것을 사용) 다음이 우아하고 간단하다고 생각합니다.zshbash-pbashzshread 'var?prompt'ksh

for arg in root user; do
    IFS= read -rsp "Please enter your $arg password: " "dbr_$arg"
    echo
done

결과 $dbr_user에는 sum 변수에 비밀번호가 포함 되어야 합니다 $dbr_root.

알아채다사용자가 비밀번호에 백슬래시나 선행/후행 공백 또는 탭을 포함하도록 요구 -r하고 허용합니다.IFS=.

동등한 zsh:

for arg (root user) IFS= read -rs "dbr_$arg?Please enter your $arg password: "

관련 정보