“=”符号之前和之后的单词

“=”符号之前和之后的单词

我正在尝试编写一些代码,根据用户输入在 = 符号之前和之后显示单词。例如,如果用户输入,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

相关内容