当用户需要使用空格输入数据时,我很难理解我们如何处理bash computed2
输入。
有人可以提供简单的解释吗?
read
一个单词艺术家(Bjork)可以正常工作,但是,例如,当您尝试输入名字和姓氏时,整个系统就会崩溃。
我想我能够做到这一点的唯一方法是使用循环分别处理每个输入,然后将字符串集中到一个完整的空格中的单个变量中。
答案 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范围之外的某些字符;只有在您确认输入中的空格可以正常工作之后,才应对这些字符进行测试。