bash - 如何在 bash 中读取空格 - 读取不会

标签 bash character whitespace

许多人已经展示了如何在 bash 中阅读一行时保留空格。但是我有一个基于字符的算法,它需要分别处理每个字符的每一端——包括空格。不幸的是,我无法读取 bash 以从输入中读取一个单个空格字符。

while read -r -n 1 c; do printf "[%c]" "$c" done <<< "mark spitz" printf "[ ]\n"

产量

[m][a][r][k][][s][p][i][t][z][][ ]

我已经解决了这个问题,但最好弄清楚如何读取单个任何单个字符。 是的,尝试设置 IFS 等。

最佳答案

只需设置输入字段分隔符(a),这样它就不会将空格(或任何字符)视为分隔符,这样就可以正常工作:

printf 'mark spitz' | while IFS="" read -r -n 1 c; do
    printf "[%c]" "$c"
done
echo

这给你:

[m][a][r][k][ ][s][p][i][t][z]

您会注意到我还稍微改变了您获取输入的方式,<<<似乎在末尾提供了一个无关的字符,虽然它对输入法本身并不重要,但我还是最好更改它以避免任何混淆。


(a) 是的,我知道您您已经尝试设置 IFS但是,由于您实际上并没有展示如何您尝试了这个,而且它似乎按照我的方式工作得很好,我不得不假设您可能只是做错了什么。

关于bash - 如何在 bash 中读取空格 - 读取不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28800740/

相关文章:

c++ - 是否内联这个函数?

java - 如何让我的代码失去开头的空格?

bash - bash 脚本中的 grep + Jenkins

linux - "ls *"输出不一致

c - 显示包含空格的字符串中每个单词的第一个字母

具有 0x00 字符的 C++ 数据数组

php - 使用解析器标记删除 PHP 中允许的空格

linux - 在bash中用另一个数字替换一个数字

bash - 我们如何从GCP编写器(DAG)执行Bash脚本(在Compute Engine VM中存在)?

c - 通过输入字符月份和整数年份打印日历