В современных сценариях вместо команды expr
обычно применяется более эффективная синтаксическая конструкция $((...))
, которая будет описана далее в этой главе.
Команда printf
есть только в современных командных оболочках. Группа X/Open полагает, что ее следует применять вместо команды echo
для генерации форматированного вывода, несмотря на то, что, кажется, лишь немногие следуют этому совету.
У команды следующая синтаксическая запись.
printf
"строка формата" параметр1 параметр2 ...
Строка формата очень похожа с некоторыми ограничениями на применяемую в языках программирования С и С++. Главным образом не поддерживаются числа с плавающей точкой, поскольку все арифметические операции в командной оболочке выполняются над целыми числами. Строка формата состоит из произвольной комбинации литеральных символов, escape-последовательностей и спецификаторов преобразования. Все символы строки формата, отличающиеся от \
и %
, отображаются на экране при выводе.
В табл. 2.7 приведены поддерживаемые командой escape-последовательности.
Таблица 2.7
Escape-последовательность | Описание |
---|---|
\"
|
Двойная кавычка |
\\
|
Символ обратный слэш |
\a
|
Звуковой сигнал тревоги (звонок колокольчика или прерывистый звуковой сигнал) |
\b
|
Символ Backspace (стирание слева) |
\c
|
Отбрасывание последующего вывода |
\f
|
Символ Form feed (подача бумаги) |
\n
|
Символ перехода на новую строку |
\r
|
Возврат каретки |
\t
|
Символ табуляции |
\v
|
Символ вертикальной табуляции |
\ooo
|
Один символ с восьмеричным значением ooo |
\xHH
|
Один символ с шестнадцатеричным значением HH |
Спецификаторы преобразований довольно сложны, поэтому мы приведем наиболее распространенные варианты их применения. Более подробную информацию можно найти в интерактивном справочном руководстве командной оболочки bash или на страницах раздела 1 интерактивного руководства к команде printf
(man 1 printf
). (Если вы не найдете нужных сведений в разделе 1, попробуйте поискать в разделе 3.) Спецификатор преобразования состоит из символа %
, за которым следует символ преобразования. Основные варианты преобразований перечислены в табл. 2.8.
Таблица 2.8
Символ преобразования | Описание |
---|---|
D
|
Вывод десятичного числа |
С
|
Вывод символа |
S
|
Вывод строки |
%
|
Вывод знака % |
Строка формата используется для интерпретации остальных параметров команды и вывода результата, как показано в следующем примере: