mktemp在bash脚本中使用时失败

时间:2013-11-24 16:12:56

标签: bash

在Mac OS X中,我直接在终端中使用mktemp没有问题,但是bash脚本中的相同命令失败。我做错了什么?

直接使用:

Air2:~ jk$ mktemp -t "$0"

/var/folders/dq/g6bjxff136515xqlntckj0hc0000gn/T/-bash.74Kw3y9E

SCRIPT:

#!/bin/sh
mktemp -t "$0"

SCRIPT RUN:

Air2:~ jk$ ~/Desktop/Temp/junk.sh

mktemp: mkstemp failed on /var/folders/dq/g6bjxff136515xqlntckj0hc0000gn/T//Users/jk/Desktop/Temp/junk.sh.VrRRi9qE: No such file or directory
Air2:~ jk$ 

1 个答案:

答案 0 :(得分:3)

您没有名为/var/folders/dq/g6bjxff136515xqlntckj0hc0000gn/T//Users/jk/Desktop/Temp/的目录。

请注意,当您在bash脚本中使用$0时,~/Desktop/Temp/junk.shmktemp,并且〜也会展开。因此,mktemp现在尝试在当前目录下4层深的目录中创建文件,而不是在当前目录中创建一个简单的临时文件。由于它不存在,您的命令失败。

来自 -t interpret TEMPLATE as a single file name component, relative to a directory: $TMPDIR, if set; else the directory specified via -p; else /tmp [deprecated] 的手册页:

-t

所以,你从马的山上有它。 {{1}}的参数应该是单个文件名组件,而不是路径值。