我编写了一个简单的 bash 脚本,用于在两个目录之间运行 rsync,并且我希望它在运行后保持终端窗口打开,这样我就可以检查一切是否正常。
因此,我找到了两种不同的解决方案这个话题,即将命令read
或添加read -rn1
到脚本末尾,我想知道它们之间有什么区别,以及我是否应该更喜欢使用其中一个,因为两者似乎都做同样的事情。
答案1
read
等待以换行符结尾的行,然后结束。因此,只有 Enter 键才允许您完成命令,因此在您的情况下,关闭终端窗口。
read -n1
等待一个字符,然后结束。因此,按任意键一次即可终止命令,因此在您的情况下,会关闭终端窗口。
但是,我认为 -r 选项在你的情况下没有什么用处
有关 bash 内置命令的更多信息read
:
man bash
(read
参见SHELL BUILTIN COMMANDS
)help -m read
答案2
您可以运行read --help
看看-rn1
会发生什么。
跑步read -rn1
和read -r -n1
-r 不允许反斜杠转义任何字符
-n nchars 在读取 NCHARS 个字符后返回,而不是等待换行符,但如果在分隔符前读取的字符少于 NCHARS 个,则遵守分隔符