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