-1

我需要从用户那里得到输入来回应这个:

输入您的邮政编码、城市和州(按此顺序)

我得到该输入的代码行是:

read zipCode city state

但是,如果这个城市不止一个词,整个事情就会搞砸。

我的主要问题是,我如何将用户输入的第一个单词输入 zipCode,最后一个输入状态,以及介于两者之间的所有内容输入城市?

任何帮助将不胜感激。

4

3 回答 3

2

我会尝试将输入与空格分开。如果您需要用户在一个步骤中执行输入,您可以用逗号或其他东西来分隔它(哎呀,即使是标准的邮政格式,ieBaton Rouge, LA 70821也会更容易解析)。

如果不需要在单个输入中获取所有 3 个项目,则将其拆分为 3 个输入是有意义的。

于 2013-09-05T21:40:03.710 回答
1

如果您遇到空格问题,您可以将 IFS'(内部字段分隔符)变量值更改为另一个分隔符,即 ':'

IFS=':'
echo "Insert zip code, city and state separated by :"
read zipCode city state
echo "Zip:"  $zipCode    
echo "City:" $city
echo "State:" $state
于 2013-09-05T22:06:08.783 回答
0

您还可以提供转义输入:

╭─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 ∂!

对其他变量重复此操作。

于 2013-09-05T22:49:09.667 回答