2011-10-21 20 views
0

在一个shell脚本,我发现下面的代码行:

rm -f "${Tmp0}"

它在脚本中的第一行中的一个,我不熟悉的TMP0变量。它是一个外壳标准映射到特定的东西?我做了一些Google搜索,似乎无法找到很好的解释。

我怀疑这是来自脚本以前版本的残留物(不需要看到整个事物,它是无关紧要的),因为我看不到其他任何地方的任何引用。

回答

2

它没有预定义的含义,但这并不意味着它没用。如果有人在调用这个脚本之前导出这个变量,它将删除定义的文件。另外,如果此脚本source是另一个文件,则可能会在此处定义此变量。

无论如何,如果这两个条件都不成立,那么它确实可能是一个剩余的。

+0

感谢您的信息。我虽然尽可能多,但想确认。 –

1

变量${Tmp0}没有标准含义。

通常,有会是一个分配给Tmp0在此之前,如:

Tmp0="${TMPDIR:-/tmp}/tmp.$$.0"    # Generate a file name 
rm -f "${Tmp0}"        # Ensure file does not exist! 
trap 'rm -f "${Tmp0}"; exit 1' 0 1 2 3 13 15 # Ensure file is cleaned up on early exit 

...code using $Tmp0 as a temporary file... 

rm -f "${Tmp0}" # Clean up 
trap 0   # Allow exit status other than 1 
exit $status  # Exit with specified status 

如果分配是不可见的,那么它可能是某种形式的剩余碎片,或者是有人不小心选择环境变量的命名方案(以及对文件的处理有些可疑;无条件地删除文件的脚本很少流行很久)。

+0

这就是我的想法。只是确保万一它是一个我不知道的旧标准。谢谢澄清! –

0

这就是不是shell的硬编码变量,如果这就是你的意思。

可以添加一个简单的调试的代码打印变量的内容和信息,可能给你它的用途了一些线索:

echo "DEBUG: Tmp0 content is: ${Tmp0}" 
rm -f "${Tmp0}"