사용자 입력에 따라 = 기호 앞뒤에 단어를 표시하는 코드를 작성하려고 합니다. 예를 들어 사용자가 입력하면 Name=john
출력은 다음과 같습니다.
The variable is called: Name
The variable value is: john
= 기호 뒤에 값이 없는 경우
The variable is called: Name
The variable value is:
Invalid entry
사용자 입력은 다음과 같은 변수에 저장됩니다.setting
echo -e "The variable name of the setting is:" $setting | cut -d "=" -f1
value=$setting
echo -e "The variable value of the setting is:" $value | cut -d "=" -f2
case $value in
"") echo "Invalid setting"
esac
break
grep을 사용해 보았지만 동일한 문제가 발생했습니다. 두 번째 줄의 텍스트가 표시되지 않습니다. 즉, 빈 줄이거나 이 경우에는 john이라는 단어만 사용됩니다.
답변1
이를 value
전체 사용자 입력으로 설정한 setting
다음 문자열을 잘라내 echo
지만 아무것도 변경되지 않으므로 value
비어 있는지 테스트해도 여전히 전체 문자열이 포함됩니다.
대신 변수 확장을 제안합니다 cut
.
printf '%s\n' "The variable name of the setting is: ${setting%%=*}"
value="${setting#*=}"
printf '%s\n' "The variable value of the setting is: $value"
case $value in
"") echo >&2 "Invalid setting";;
esac