Bash 스크립트에서 이 명령으로 반환된 값을 가져오려고 했지만 아무것도 반환하지 않는 것 같습니다.
rr=$(read -p Enter -r)
echo "Is $rr"
read -p "java archive detected, Enter Y to download it again, N to continue $nl" -r
if [[ $REPLY =~ ^[Yy]$ ]] && [[ $(read -p Enter -r) == "Y" ]]; then
echo "Y entered $REPLY"
break;
elif [[ $REPLY =~ ^[Nn]$ ]]; then
echo "java Archive was extracted successfully to $java8Dir $nl"
fi
답변1
이는 read
명령 대체( $()
) 내에서 실행 중이기 때문입니다. 그럴 필요가 없습니다. 그냥 사용:
read -p Enter -r rr
echo "Is $rr"
이 var=$(command)
구문은 의 값을 var
의 반환 값으로 설정합니다 command
. 내장 함수는 read
아무 것도 반환하지 않으므로(종료 상태는 제외하지만 여기서는 관련이 없음) 변수가 비어 있습니다. 구문은 값을 설정한다는 read
것입니다 .read VAR
$VAR
답변2
올바른 구문 은 다음 read
과 같습니다.
read [-ers] [-a 이름] [-d delim] [-i 텍스트] [-n nchars] [-N nchars] [-p 프롬프트] [-t 시간 초과] [-u fd] [name .. ]
(에서 man bash
)
- 첫 번째 줄은 다음과 같아야 합니다
read -p Enter -r rr
(정말 백슬래시를 취소해야 합니까?). 내부 테스트는 다음을 읽어야 합니다.
if ... && [[ "$(read -p Enter R ; echo $R )" == "Y" ]] ; tehn
답변3
이 명령은 read -p Enter -r
사용자가 입력한 값을 $REPLY(Bash) 변수에 배치합니다. 따라서 다음과 같이 작동합니다.
$ read -p Enter: -r
Enter:hello
$ echo "$REPLY"
hello
따라서 var rr에 사용자 입력을 원하는 경우 다음을 수행하십시오.
$ read -p "Enter: " -r rr
Enter: hello
$ echo "$rr"
hello
또는 한 줄로:
$ read -p "Enter: " -r rr; echo "$rr"
Enter: hello
hello
변수를 읽고 인쇄하기 위해 (스크립트에서) 수행해야 할 작업은 다음과 같습니다.
read -p "Enter : " -r rr
echo "Is $rr"