任何人都可以向我解释这些shell脚本的含义是什么吗?
# .........
tmpfile=`tmpfile 2>/dev/null` || tmpfile=/tmp/test$$
trap "rm -f $tmpfile" 0 1 2 5 15
# .........
而且,以下两个,哪一个更好?
tmpfile=`tmpfile 2>/dev/null`
tmpfile=$(tmpfile 2>/dev/null)
我很少使用trap
命令和||
运算符,我查阅了手册,但仍然不知道。
答案 0 :(得分:2)
此行创建一个临时文件。如果tmpfile
失败,则将其errorlevel代码传递给子shell,子shell也将其转发给调用shell。如果代码非零,则将使用默认文件/tmp/test$$
(|| tmpfile=/tmp/test$$
)。 $$
是保存它的shell的进程ID号。
tmpfile=`tmpfile 2>/dev/null` || tmpfile=/tmp/test$$
这个为shell创建一个陷阱,当收到信号0,1,2,5和15时调用rm -f $tmpfile
。有关此列表,请参阅kill -l
。
trap "rm -f $tmpfile" 0 1 2 5 15
在POSIX系统中首选使用$()
一对反引号。只需在它们上面使用它。 $()
还允许使用这对反引号进行递归(这需要递归引用)。
tmpfile=`tmpfile 2>/dev/null`
tmpfile=$(tmpfile 2>/dev/null)