我一直在尝试使用 bash 逐个字符地读取文件。
经过多次反复试验,我发现这是有效的:
exec 4<file.txt
declare -i n
while read -r ch <&4;
n=0
while [ ! $n -eq ${#ch} ]
do echo -n "${ch:$n:1}"
(( n++ ))
done
echo ""
done
Run Code Online (Sandbox Code Playgroud)
即,我可以逐行读取它,然后逐个字符地遍历每一行。
在这样做之前,我曾尝试过:
exec 4<file.txt && while read -r -n1 ch <&4; do; echo -n "$ch"; done
但它会跳过文件中的所有空格。
你能解释一下为什么吗?有没有办法使第二个策略(即使用 bash 读取一个字符一个字符地读取)起作用?