gpt4 book ai didi

linux - mktemp 的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:54 26 4
gpt4 key购买 nike

我在使用 mktemp 时遇到问题。我写了一个脚本:

tempdir=$(mktemp -t -d mytemp.XXXXXX)

mv ~/Desktop/File_Converted/* "$tempdir"

cd $tempdir

for f in *; do

Some stuff...

done

当我运行它时,我得到:

$ ~/Desktop/script.sh 
mv: rename /Users/user/Desktop/File_Converted/* to /var/folders/xE/xEV9UA-AFpOdJkN2IrTAArI6Gs/-Tmp-/-d.eiXRhaHY\nmytemp.caNEzp: No such file or directory
/Users/user/Desktop/script.sh: line 21: cd: /var/folders/xE/xEV9UA-AFpOdJkN2IrTAArI6Gs+/-Tmp-/-d.eiXRhaHY: Not a directory

我似乎找不到我做错了什么。有什么帮助吗?

谢谢!

最佳答案

你把 -t-d 搞混了。

mktemp 的 -t 参数接受一个参数,在您的情况下它接受 -d。因此,您得到的是文件名而不是目录,mv 失败。

该错误更加令人困惑,因为 mktemp 正在使用您想要的模板 (mytemp.XXXXXX),并且基于它生成一个临时名称。这就是错误消息中有 \n 的原因,mktemp 的输出实际上只有两行。

相关文档:

mktemp [-d] [-q] [-t prefix] [-u] template ...

-d Make a directory instead of a file.

-t prefix
Generate a template (using the supplied prefix and TMPDIR if set) to create a filename template.

根据您的评论,
对于调试,我建议打印 $tempdir 的值并查看它是否符合您的预期。您似乎仍然收到两个 mv 错误,这表明出了点问题。

bash 的 set -e 命令会导致脚本在遇到错误后停止,这在跟踪此类问题时也非常方便。

关于linux - mktemp 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956234/

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