Latest web development tutorials

Команда Shell Printf

В последней главе мы узнали, Shell эхо команды, в этой главе мы узнаем еще один выходной Shell команды Printf.

Команда Printf имитировать C библиотеки (библиотека) в процедуре Е ().

Стандартное определение, поэтому использование Printf сценарий лучше, чем при использовании эхо-портативность.

Printf с использованием опорного текста или параметров, разделенных пробелами, могут быть использованы за пределами строки формата Printf, вы можете также развивать ширину строки, и так далее левого и правого выравнивания. По умолчанию Printf не добавляет автоматически разрыв строки, как эхо, мы можем добавить \ п вручную.

Printf синтаксис команды:

printf  format-string  [arguments...]

Параметр Описание:

  • Формат-строка: Строка управления форматом
  • Аргументы: список параметров.

Примерами могут служить следующие:

$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell
$

Далее, я использую скрипт, чтобы отразить мощный Printf:

#!/bin/bash
# author:本教程
# url:www.w3big.com
 
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 

Выполните сценарий, вывод выглядит следующим образом:

姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99

% S% C% d формат% F заполнители

% -10s См шириной 10 знаков (- для по левому краю, по правому краю, сказал, что нет), все символы отображаются в 10 символов широких символов, если недостаточно места автоматически заполняется, это будет больше, чем содержание показать все из них.

% -4.2f Относится к десятичном формате, что означает .2 2 знака после запятой.

Другие примеры:

#!/bin/bash
# author:本教程
# url:www.w3big.com
 
# format-string为双引号
printf "%d %s\n" 1 "abc"

# 单引号与双引号效果一样 
printf '%d %s\n' 1 "abc" 

# 没有引号也可以输出
printf %s abcdef

# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s abc def

printf "%s\n" abc def

printf "%s %s %s\n" a b c d e f g h i j

# 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替
printf "%s and %d \n" 

Выполните сценарий, вывод выглядит следующим образом:

1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j  
 and 0

Последовательность выхода PRINTF в

последовательность объяснение
\ A Предупреждение характер, как правило, ASCII BEL символа
\ B отбой
\ C Ингибирование (не показан), выход в любой символ новой строки символов (действителен только в строке параметров при% B индикатора формата контролируемой), и в любых оставшихся символов в параметрах, а также любых параметров и любого последующего пребывания в форматной строки символов, игнорируются
\ F FF (Под.стр)
\ N Wrap
\ R Enter (возврат каретки)
\ T Горизонтальная табуляция
\ V Вертикальная вкладка
\\ Буквальное символ обратной косой черты
\ Ddd Представляют символов 1-3 цифр восьмеричное значение. Действует только в строке формата
\ 0ddd Показаны 1-3 восьмеричное значение символа

примеров

$ printf "a string, no processing:<%s>\n" "A\nB"
a string, no processing:<A\nB>

$ printf "a string, no processing:<%b>\n" "A\nB"
a string, no processing:<A
B>

$ printf "www.w3big.com \a"
www.w3big.com $                  #不换行