이것이 제가 현재 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
이미 내가 원하는 방식으로 정렬되어 있지만 다음과 같은 이유로 마음이 편하지 않습니다.
read -s
하나가 아닌 두 개의 명령이 있습니다 .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 과 같은 것을 사용) 다음이 우아하고 간단하다고 생각합니다.zsh
bash
-p
bash
zsh
read '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: "