ファイル名に2組のXがある場合、「mktemp:テンプレートにXが少なすぎます」

ファイル名に2組のXがある場合、「mktemp:テンプレートにXが少なすぎます」

私はXenial Ubuntuを使用しています。バッシュバージョンはGNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

このエラーが発生します。mktemp: too few X's in template私のシェルスクリプトがこのコマンドを実行したときmktemp /tmp/1556580619403-0/duplicate.XXXXXXX.BABj9f0X1bg_work_DADYj9GphRM2_page0_preview.png

ファイル名は実際には関数内で次のように構成されます。

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

2番目の発生はX明らかに問題の原因です。

Xこの問題を解決するためのスイッチや他の方法(ファイル名の2番目の項目を置き換えること以外)がありますか?

答え1

mktemp変えるテンプレートの最後のXを実行する:

テンプレートの最後の「X」は英数字に置き換えられます。

最も簡単なオプションは、次を使用することです。

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

元のファイル名で終わる必要がある場合は、次の--suffixオプションを使用してください。

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

関連情報