这个bash read-n有什么问题?

这个bash read-n有什么问题?,bash,Bash,我正在学习Bash,正在学习read命令。我认为-N和-N选项的区别在于-N会覆盖IFS,而-N不会。在下面的示例中,我希望var6采用“ijfz”的值,因为我认为空格将充当字段分隔符。 但它似乎有“ijfz e”的价值。该空间未用作字段分隔符 printf "%s\n" "ijfz eszev enacht" | { read -n 6 var6 printf "%s\n" "$var6" } 我想看看$IFS是什么,但下面的printf命令对我了解不多: printf ":%s:\n" "

我正在学习Bash,正在学习read命令。我认为-N和-N选项的区别在于-N会覆盖IFS,而-N不会。在下面的示例中,我希望var6采用“ijfz”的值,因为我认为空格将充当字段分隔符。 但它似乎有“ijfz e”的价值。该空间未用作字段分隔符

printf "%s\n" "ijfz eszev enacht" | {
read -n 6 var6
printf "%s\n" "$var6"
}
我想看看$IFS是什么,但下面的printf命令对我了解不多:

printf ":%s:\n" "$IFS"
给出以下输出

:   
:

我不明白什么…?

用分隔符表示使用选项
-d
。请看这一区别:

printf "%s\n" "ijfz eszev enacht" | { read -d ' ' -N 6 var6; printf "[%s]\n" "$var6"; }
[ijfz e]

printf "%s\n" "ijfz eszev enacht" | { read -d ' ' -n 6 var6; printf "[%s]\n" "$var6"; }
[ijfz]
  • 在第一种情况下,当使用
    -N
    时,它忽略
    -d'
    ,并准确读取6个字符
  • 在第二种情况下,当使用
    -n
    时,它尊重
    -d'
    并读取,直到读取到一个空格