许多人已经展示了如何在 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/