Интерполяция строки

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 ознакомьтесь с этим: