스크립트를 통해 -s를 읽으면 오류가 발생합니다.

스크립트를 통해 -s를 읽으면 오류가 발생합니다.

사용자로부터 비밀번호를 읽으려고 하는데 -s자동 플래그를 사용했지만 read -s스크립트에서는 작동하지 않지만 터미널에서 수동으로 실행하면 작동합니다.

오류 정보

project.sh: 3: read: Illegal option -s
you entered 

암호

maddy@ElementalX:~/Desktop$ cat project.sh 
#!/usr/bin/sh

read -s -p "Enter Password: " pswd
echo "you entered $pswd"
maddy@ElementalX:~/Desktop$ 

답변1

-s내장 유틸리티 옵션은 read​​표준이 아니며 에서는 사용할 수 없습니다 sh. 마찬가지로 -p사용자 정의 프롬프트를 제공하는 옵션도 보편적으로 사용할 수 없습니다 sh.

대신 입력한 문자를 에코하지 않고 터미널에서 읽기를 지원하는 bash스크립트 를 실행하세요 . 가장 쉬운 방법은 시스템의 실행 파일을 가리키도록 -line을 변경하는 것 입니다.read-s-p#!bash

쉘이 아닌 경우 bash다음과 같은 것을 얻을 수 있습니다.

printf 'Enter password: ' >&2

stty -echo
read password
stty echo

관련 정보