В Bash:
var=$(printf 'FILE=_%s_%s.dat' "$val1" "$val2")
или, эквивалент, и ближе к sprintf
:
printf -v var 'FILE=_%s_%s.dat' "$val1" "$val2"
Если ваши переменные содержат десятичные значения с ведущими нулями, вы можете удалитьведущие нули:
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))
приводит значение к основанию 10, поэтому %d
в спецификации формата не считает, что "08"неверное восьмеричное значение.
Если вы используете date
(по крайней мере, для GNU 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"
Добавление начальных нулей полезно для созданиязначения, которые легко сортируются и аккуратно выравниваются в столбцах.