我一直在尝试使用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
即,我可以逐行读取它,然后逐字符逐个循环。
在执行此操作之前,我已经尝试过:
exec 4<file.txt && while read -r -n1 ch <&4; do; echo -n "$ch"; done
但是它将跳过file中的所有空格。
你能解释为什么吗?有没有办法使第二种策略(即用bash的read逐字符读取char)起作用?
IFS
为空时不让空格在单词拆分中存活。