在一个shell脚本,我发现下面的代码行:
rm -f "${Tmp0}"
它在脚本中的第一行中的一个,我不熟悉的TMP0变量。它是一个外壳标准映射到特定的东西?我做了一些Google搜索,似乎无法找到很好的解释。
我怀疑这是来自脚本以前版本的残留物(不需要看到整个事物,它是无关紧要的),因为我看不到其他任何地方的任何引用。
在一个shell脚本,我发现下面的代码行:
rm -f "${Tmp0}"
它在脚本中的第一行中的一个,我不熟悉的TMP0变量。它是一个外壳标准映射到特定的东西?我做了一些Google搜索,似乎无法找到很好的解释。
我怀疑这是来自脚本以前版本的残留物(不需要看到整个事物,它是无关紧要的),因为我看不到其他任何地方的任何引用。
它没有预定义的含义,但这并不意味着它没用。如果有人在调用这个脚本之前导出这个变量,它将删除定义的文件。另外,如果此脚本source
是另一个文件,则可能会在此处定义此变量。
无论如何,如果这两个条件都不成立,那么它确实可能是一个剩余的。
变量${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
如果分配是不可见的,那么它可能是某种形式的剩余碎片,或者是有人不小心选择环境变量的命名方案(以及对文件的处理有些可疑;无条件地删除文件的脚本很少流行很久)。
这就是我的想法。只是确保万一它是一个我不知道的旧标准。谢谢澄清! –
这就是不是shell的硬编码变量,如果这就是你的意思。
可以添加一个简单的调试的代码打印变量的内容和信息,可能给你它的用途了一些线索:
echo "DEBUG: Tmp0 content is: ${Tmp0}"
rm -f "${Tmp0}"
感谢您的信息。我虽然尽可能多,但想确认。 –