我阅读了许多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/