在 bash 脚本末尾添加“read”和“read -rn1”有什么区别?

在 bash 脚本末尾添加“read”和“read -rn1”有什么区别?

我编写了一个简单的 bash 脚本,用于在两个目录之间运行 rsync,并且我希望它在运行后保持终端窗口打开,这样我就可以检查一切是否正常。

因此,我找到了两种不同的解决方案这个话题,即将命令read或添加read -rn1到脚本末尾,我想知道它们之间有什么区别,以及我是否应该更喜欢使用其中一个,因为两者似乎都做同样的事情。

答案1

read等待以换行符结尾的行,然后结束。因此,只有 Enter 键才允许您完成命令,因此在您的情况下,关闭终端窗口。

read -n1等待一个字符,然后结束。因此,按任意键一次即可终止命令,因此在您的情况下,会关闭终端窗口。

但是,我认为 -r 选项在你的情况下没有什么用处

有关 bash 内置命令的更多信息read

  • man bashread参见SHELL BUILTIN COMMANDS
  • help -m read

答案2

您可以运行read --help看看-rn1会发生什么。

跑步read -rn1read -r -n1

-r 不允许反斜杠转义任何字符

-n nchars 在读取 NCHARS 个字符后返回,而不是等待换行符,但如果在分隔符前读取的字符少于 NCHARS 个,则遵守分隔符

相关内容