Вы заметили, что _
был «проигнорирован»? Это большой намек.
Если вы используете set -u
, вы увидите следующее:
-bash: name_: unbound variable
Путь Баш разбирает его, подчеркивание является частью имени переменной.
Существует несколько способов устранения проблемы.
Самый чистый - это конструкция ${var}
, которая отделяет имя переменной от ее окружения.
Вы также можете использовать цитаты различными способами, чтобы заставить правильный синтаксический анализ и т.д .: "$dir/$name""_$date.ext"
И в случае, если ваши переменные могут содержать пробелы (в настоящее время или в будущем) использовать цитату слова.
command >"$dir/${name}_$date.ext"
command >"${dir}/${name}_${date}.ext"
Оба эти качества, просто выберите один стиль и придерживайтесь его.
Использование: 'command>" $ {dir}/$ {name} _ $ {date} .ext "' – anubhava
'set -u' может быть хорошей идеей. – Biffen
В вашем коде используется имя var 'name_'. Если вы не можете изменить последнюю строку в полях с помощью '{}', вы можете работать с 'name_ = bob_'. –