pid =`cat $ pidfile`或读取pid <$ pidfile?

gav*_*koa 8 posix sh

我读了很多init.d脚本,并且:

pid=`cat $pidfile`
Run Code Online (Sandbox Code Playgroud)

线让我伤心.我不明白为什么人们不使用:

read pid <$pidfile
Run Code Online (Sandbox Code Playgroud)

上一个示例使用符合POSIX的语法,不执行fork/ exec运行外部进程(cat).

最后的解决方案还允许在第一个换行符后跳过内容.

是否有任何带有read命令的陷阱(尽管它执行拆分为字段)?

更新.有些人使用非便携式扩展来实现shell:

如何从文本文件变量到Bash变量

pid=$(<$pidfile)
Run Code Online (Sandbox Code Playgroud)

Jen*_*ens 8

这种read pid < file方式是最佳实践,因为你说的原因:比叉子/执行官便宜得多cat.

至于为什么这么多脚本以昂贵的方式做到这一点,我只能推测.可能会从其他人的脚本中删除'n',同时缺乏对shell功能的了解,以及超快的CPU.谁有堆栈溢出时谁会读取手册页?:-)特别是由于引入了所有术语,shell手册页是一本难以阅读的新手参考手册.

谁说Catless Use Use是管道的特权?