我需要从用户那里得到输入来回应这个:
输入您的邮政编码、城市和州(按此顺序)
我得到该输入的代码行是:
read zipCode city state
但是,如果这个城市不止一个词,整个事情就会搞砸。
我的主要问题是,我如何将用户输入的第一个单词输入 zipCode,最后一个输入状态,以及介于两者之间的所有内容输入城市?
任何帮助将不胜感激。
我会尝试将输入与空格分开。如果您需要用户在一个步骤中执行输入,您可以用逗号或其他东西来分隔它(哎呀,即使是标准的邮政格式,ieBaton Rouge, LA 70821
也会更容易解析)。
如果不需要在单个输入中获取所有 3 个项目,则将其拆分为 3 个输入是有意义的。
如果您遇到空格问题,您可以将 IFS'(内部字段分隔符)变量值更改为另一个分隔符,即 ':'
IFS=':'
echo "Insert zip code, city and state separated by :"
read zipCode city state
echo "Zip:" $zipCode
echo "City:" $city
echo "State:" $state
您还可以提供转义输入:
╭─phillip@phillip-laptop ~/Documents/code/py/pandas-3.3 ‹ruby-1.9.3@global› ‹eval-3393@8a2f309› ‹pandas-3.3›
╰─$ read zipcode city state
asdf "New\ York\ City" asdf
╭─phillip@phillip-laptop ~/Documents/code/py/pandas-3.3 ‹ruby-1.9.3@global› ‹eval-3393@8a2f309› ‹pandas-3.3›
╰─$ echo $city
"New York City"
但是,为了对小猫的爱,请不要让您的用户这样做。只需要求 3 个不同的值:
╭─phillip@phillip-laptop ~/Documents/code/py/pandas-3.3 ‹ruby-1.9.3@global› ‹eval-3393@8a2f309› ‹pandas-3.3›
╰─$ echo -en "City: " && read city
City: My Awesome City with ∂!
╭─phillip@phillip-laptop ~/Documents/code/py/pandas-3.3 ‹ruby-1.9.3@global› ‹eval-3393@8a2f309› ‹pandas-3.3›
╰─$ echo $city
My Awesome City with ∂!
对其他变量重复此操作。