如何在BASH中通过空格输入两个整数并实现拆分?
在BASH中按空格拆分输入到多个变量的方法
最直接的解决方案:利用read命令的自动拆分特性
BASH的read命令默认会按照空白字符(空格、制表符、换行符等)拆分输入内容,直接将拆分后的字段赋值给多个变量:
read a b
当你输入12 14并回车后,变量a会被赋值为12,变量b会被赋值为14。如果输入的字段数量超过变量数量,多余的所有内容会被统一赋值给最后一个变量(比如输入12 14 15,b的值会是14 15)。
从已读取的字符串中拆分
如果已经将整行内容读取到一个字符串变量中,可以通过数组实现拆分:
- 先读取整行内容:
read string
- 将字符串拆分为数组(默认按空白拆分):
arr=($string)
- 提取数组元素到目标变量:
a=${arr[0]} b=${arr[1]}
你也可以直接用read命令一次性将输入读取到数组中:
read -r -a arr a=${arr[0]} b=${arr[1]}
其中-r参数用于避免read解析输入中的转义字符,-a指定将输入存储到数组arr中。
你之前方法的问题说明
- 连续两次
read:read a会把第一行的12 14完整赋值给a,read b则会读取下一行的1赋值给b,这和你想要的拆分结果不符。 - BASH确实没有Python那样的
split()函数,但通过上述内置的变量拆分、数组特性完全可以实现相同的需求。
内容的提问来源于stack exchange,提问作者Елисей Микерин
相关产品推荐
相关产品推荐

