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

pid=`cat $pidfile`

台词使我难过。我不明白为什么人们不使用:
read pid <$pidfile

最后一个示例使用符合POSIX的语法,并且不执行fork/exec来运行外部进程(cat)。

最后的解决方案还允许在第一个换行符之后跳过内容。
read命令是否存在任何陷阱(尽管它执行拆分为字段)?

更新。某些peole使用非便携式扩展程序来扩展 shell ,例如:

How to get variable from text file into Bash variable
pid=$(<$pidfile)

最佳答案

出于您所陈述的原因,read pid < file方法是最佳实践:比cat的fork/exec便宜得多。

至于为什么这么多脚本以昂贵的方式执行此操作,我只能推测。可能会从其他人的脚本中剪切掉'n'paste,再加上对 shell 功能的了解不足,再加上速度飞快的CPU。堆栈溢出时,谁会阅读手册页? :-)由于引入了所有术语,特别是对于新手来说,shell手册页是很难阅读的引用手册。

谁说无用的猫是管道的特权?

关于posix - pid =`cat $pidfile`或读取pid <$ pidfile?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21432883/

10-13 02:14