在 Bash 的内置“read”中命令,有没有办法让它接受空格作为输入

发布于 2024-12-20 17:43:27 字数 100 浏览 0 评论 0原文

我的 Google-fu 在这里让我失望了。

如果我有一个“hello world”标记,然后将其用作 bash 内置读取的标准输入,则尾随空格将被截断。有办法保存它吗?

My Google-fu is failing me here.

If I have a token of "hello world " and then use it as stdin for bash's builtin read, I will get the trailing whitespace truncated. Is there a way to preserve that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

断肠人 2024-12-27 17:43:27

结果你必须将变量 $IFS 设置为换行符。这就是我所做的,并且有效。

$ read x
hello world 
$ echo $x"testing"
hello worldtesting
$ IFS='\n'
$ read x
hello world 
$ echo $x"testing"
hello world testing

手册上说,我引用一下,咳咳:

如果 IFS 的值不是默认值,则序列
开头的空白字符“space”和“Tab”将被忽略
和单词的结尾,只要空格字符在
IFS 的值(IFS 空白字符)。

资料来源:有关阅读本身的信息 & 有关分词的信息

Turns out that you have to set the variable $IFS to newline. This is what I did, and it worked

$ read x
hello world 
$ echo $x"testing"
hello worldtesting
$ IFS='\n'
$ read x
hello world 
$ echo $x"testing"
hello world testing

The manual says, and I quote, ahem:

If IFS has a value other than the default, then sequences of the
whitespace characters "space" and "Tab" are ignored at the beginning
and end of the word, as long as the whitespace character is in the
value of IFS (an IFS whitespace character).

Sources: info on read itself & info on word splitting

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文