我读了很多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:
pid=$(<$pidfile)
Run Code Online (Sandbox Code Playgroud)
这种read pid < file方式是最佳实践,因为你说的原因:比叉子/执行官便宜得多cat.
至于为什么这么多脚本以昂贵的方式做到这一点,我只能推测.可能会从其他人的脚本中删除'n',同时缺乏对shell功能的了解,以及超快的CPU.谁有堆栈溢出时谁会读取手册页?:-)特别是由于引入了所有术语,shell手册页是一本难以阅读的新手参考手册.
谁说Catless Use Use是管道的特权?