这些shell脚本的含义是什么?

时间:2014-06-03 14:19:08

标签: bash shell

任何人都可以向我解释这些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命令和||运算符,我查阅了手册,但仍然不知道。

1 个答案:

答案 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)
相关问题