如果文件名中有两组 X,则“mktemp:模板中的 X 太少”

如果文件名中有两组 X,则“mktemp:模板中的 X 太少”

我正在使用 Xenial ubuntu。 bash 版本是GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

我收到这个错误mktemp: too few X's in template当我的 shell 脚本执行这个命令时mktemp /tmp/1556580619403-0/duplicate.XXXXXXX.BABj9f0X1bg_work_DADYj9GphRM2_page0_preview.png

文件名实际上是在函数中这样构造的

myfunction() {
    local filename
    filename=$0
    mktemp /tmp/1556580619403-0/duplicate.XXXXXXX.${filename}
}

第二次出现X显然是导致问题的原因。

是否有任何开关或其他方法(除了替换X文件名中第二次出现的 )可以解决此问题?

答案1

mktemp取代模板中最后运行的 X:

模板中最后的“X”将被字母数字字符替换

最简单的选择是使用

mktemp "/tmp/1556580619403-0/duplicate.$filename.XXXXXXX"

如果您确实需要它以原始文件名结尾,请使用以下--suffix选项:

mktemp /tmp/1556580619403-0/duplicate.XXXXXXX --suffix ".$filename"

相关内容