如何在Bash中逐字符读取文件并包含空格?
Bash脚本逐字符读取文件(含空格解决方案)
原代码无法读取空格是因为read命令默认会忽略开头的空白字符,且未正确处理变量输出。以下是修正后的脚本:
while IFS= read -r -n1 c; do echo -n "$c" done < "$1"
关键修改说明:
IFS=:清空内部字段分隔符,让read不再忽略空格、制表符等空白字符-r:禁止解析反斜杠转义,确保读取文件中的原始字符"$c":用双引号包裹变量,避免空格被Shell展开为空echo -n:取消自动添加换行符,保证逐字符输出的行为和读取一致
如果需要完整读取包括换行符在内的所有字符,还可以用这种方式:
cat "$1" | while IFS= read -r -d '' -n1 c; do echo -n "$c" done
内容的提问来源于stack exchange,提问作者decipher
相关产品推荐
相关产品推荐

