"=" 기호 앞뒤의 단어

"=" 기호 앞뒤의 단어

사용자 입력에 따라 = 기호 앞뒤에 단어를 표시하는 코드를 작성하려고 합니다. 예를 들어 사용자가 입력하면 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

관련 정보