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

Ant*_*ong 1 bash ubuntu

我使用Ubuntu的Xenial。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}
}
Run Code Online (Sandbox Code Playgroud)

第二次出现X显然是造成问题的原因。

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

Ste*_*itt 6

mktemp替换模板中最后一次运行的 X

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

最简单的选择是使用

mktemp "/tmp/1556580619403-0/duplicate.$filename.XXXXXXX"
Run Code Online (Sandbox Code Playgroud)

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

mktemp /tmp/1556580619403-0/duplicate.XXXXXXX --suffix ".$filename"
Run Code Online (Sandbox Code Playgroud)