在Mac中,直接在终端中使用mktemp没有问题,但是bash脚本中的相同命令失败了。我做错了什么?
直接:
Air2:~ jk$ mktemp -t "$0"
/var/folders/dq/g6bjxff136515xqlntckj0hc0000gn/T/-bash.74Kw3y9E脚本:
#!/bin/sh
mktemp -t "$0"脚本运行:
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$ 发布于 2013-11-24 16:16:17
您没有一个名为/var/folders/dq/g6bjxff136515xqlntckj0hc0000gn/T//Users/jk/Desktop/Temp/的目录。
注意,当您在bash脚本中使用$0时,它是~/Desktop/Temp/junk.sh,并且~也会被展开。因此,mktemp现在不是在当前目录中创建一个简单的临时文件,而是尝试在当前目录的4层目录中创建该文件。因为它不存在,所以命令失败。
来自mktemp的手册页
-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的参数应该是单个文件名组件,而不是路径值。
https://stackoverflow.com/questions/20176741
复制相似问题