首页 > 解决方案 > 带有空格的 Bash 输入字符串

问题描述

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

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

read -p 'Artist: ' ARTIST
read -p 'Album: ' ALBUM
read -p 'Genre: ' GENRE

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

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

标签: bashinput

解决方案


您的声明中似乎有错字read。终止引号 of 和变量占位符之间应该有一个空格-p,没有相同的 read 会错误地将提示消息压缩为

read -p 'Artist: ARTIST'

它应该在哪里

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

您可以看到第二个按预期工作。此外,使用正确的引号,您的脚本应该可以按预期工作

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

将结果按预期放置。


read自从第一篇文章引用的语句有问题以来,该问题已被编辑。我最初的答案是为了回答这个问题。从那以后,这个问题被修改了,看起来更像是Bash:在命令行上保留带空格输入的字符串?


推荐阅读