带有空格的Bash输入字符串

时间:2019-03-06 07:07:54

标签: bash input

当用户需要使用空格输入数据时,我很难理解我们如何处理bash computed2输入。

有人可以提供简单的解释吗?

read

一个单词艺术家(Bjork)可以正常工作,但是,例如,当您尝试输入名字和姓氏时,整个系统就会崩溃。

我想我能够做到这一点的唯一方法是使用循环分别处理每个输入,然后将字符串集中到一个完整的空格中的单个变量中。

2 个答案:

答案 0 :(得分:3)

您似乎在read语句中有错字。在-p的结束引号和变量占位符之间应该有一个空格,而没有相同的读取会错误地将提示消息挤压为

read -p 'Artist: ARTIST'

应该在的地方

read -p 'Artist: ' ARTIST
#               ^^^^

您可以按预期看到第二部作品。另外,使用正确的引号可以使您的脚本按预期运行

bash script.sh
Artist: John Lenon
Album: The Beatles

按预期放置结果。


自第一篇帖子中引号中的read语句出现问题以来,该问题已被编辑。我最初的回答是要回答这个问题。从那以后,问题被修改,看起来更像Bash: preserve string with spaces input on command line?

答案 1 :(得分:0)

您做得正确-从我的bash上看到了这个成绩单:

~ $ read -p 'Artist: ' ARTIST
Artist: Ronald Fischer
~ $ echo $ARTIST
Ronald Fischer
~ $

验证您确实在运行bash,并且在测试代码时,不要意外输入ASCII范围之外的某些字符;只有在您确认输入中的空格可以正常工作之后,才应对这些字符进行测试。