Переменная с интерполяцией и подстановка в строке формата printf
ShellCheck выдает предупреждение, если вы поместите переменную в printf(1)
строка формата. Зачем?
Является:
printf "$file does not exist\n"
уступает в некотором роде:
printf "%s does not exist\n" "$file"
1 ответ
Решение
Потому что в теории file
переменная может иметь некоторый символ форматирования, который потерпит неудачу printf
, Эти примеры сделают это более понятным:
file='my'
printf "$file does not exist\n"
my does not exist
file='m%y'
printf "$file does not exist\n"
-bash: printf: `y': invalid format character
По рекомендации все будет работать нормально:
printf "%s does not exist\n" "$file"
m%y does not exist