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