gpt4 book ai didi

bash - mktemp 在 bash 脚本中使用时失败

转载 作者:行者123 更新时间:2023-12-04 22:47:01 25 4
gpt4 key购买 nike

在 Mac OS X 中,直接在终端中使用 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$

最佳答案

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

请注意 $0~/Desktop/Temp/junk.sh当您在 bash 脚本中使用它时, ~ 也会被扩展。因此,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的参数应该是单个文件名组件而不是路径值。

关于bash - mktemp 在 bash 脚本中使用时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20176741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com