:
var=$(printf 'FILE=_%s_%s.dat' "$val1" "$val2")
または、同等、およびsprintf
に近い:
printf -v var 'FILE=_%s_%s.dat' "$val1" "$val2"
あなたの変数は、先行ゼロの10進値が含まれている場合は、先頭のゼロを削除することができます:
val1=008; val2=02
var=$(printf 'FILE=_%d_%d.dat' $((10#$val1)) $((10#$val2)))
か
printf -v var 'FILE=_%d_%d.dat' $((10#$val1)) $((10#$val2))
$((10#$val1))
はとてもフォーマット仕様で%d
は「08」は無効な8進数値であることを考えていないベース10に値を強制します。
あなたは(少なくともGNU date
用)date
を使用している場合、あなたはこのような先行ゼロを省略することができます:あなたはする場合は先行ゼロを追加し、完全を期すために
date '+FILE_%-m_%-d.dat'
を、にパディング一定幅:
val1=8; val2=2
printf -v var 'FILE=_%04d_%06d.dat' "$val1" "$val2"
または動的な幅を有する:
val1=8; val2=2
width1=4; width2=6
printf -v var 'FILE=_%0*d_%0*d.dat' "$width1" "$val1" "$width2" "$val2"
先行ゼロを追加すると、簡単に並べ替えて列にきれいに並べることができます。
はまた、私のスペックは、私がFILE_12_1.datの代わりに、必要なFILE_12_01.datのような文字列を生成することが必要です。 –
"DD"は偽です。 –
正しいです、DDは私の仕様の一部ではなく、物事を説明するための単なるショートカットです。何か案は? –