Fish Shell:
Интерполяция строки
Как это сделать:
В Fish используйте двойные кавычки и поместите переменную или команду, которую хотите интерполировать, с помощью знака доллара $
непосредственно в строке.
set name "world"
echo "Привет, $name!"
Вывод:
Привет, мир!
Чтобы включить вывод команды внутри строки:
echo "У меня есть (count (ls)) файлов в этой директории."
Вывод может быть:
У меня есть 9 файлов в этой директории.
Переменные и команды оцениваются и аккуратно вставляются на место, куда вы их поставили.
Глубокое погружение
До появления Fish и других современных оболочек часто приходилось использовать более громоздкую комбинацию кавычек и конкатенации или полагаться на внешние инструменты для внедрения переменных в строки.
В bash, например, это выглядело бы так:
name="world"
echo "Привет, "$name"!"
Не так уж и изящно, правда?
Fish не только упрощает этот процесс, но и более изящно обрабатывает ошибки. Если переменная не существует, Fish вставит пустую строку, уменьшая вероятность сбоя из-за неправильной интерполяции.
Альтернативы прямой интерполяции включают использование команды printf
:
set animal "нарвал"
printf "Нарвал - замечательное существо!" $animal
Вывод:
Нарвал - замечательное существо!
В этом случае %s
является заполнителем для строковой переменной $animal
, который заменяется командой printf
.
С точки зрения реализации, когда Fish обрабатывает командную строку, он анализирует строки в двойных кавычках и заменяет переменные их значениями на лету. Это элегантно и напоминает интерполяцию переменных, найденную в языках высокого уровня, таких как Ruby или PHP.
Смотрите также
Для получения дополнительной информации о манипуляциях со строками и скриптинге в Fish ознакомьтесь с этим: