🐧 Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Printf ΠΈ Echo Π½Π° Linux

Π Π°Π·Π½ΠΈΡ†Π° Printf ΠΈ Echo

by itisgood

Π’ ΠΌΠΈΡ€Π΅ скриптов Bash ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ прСдоставлСнии ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ рСгистрации ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π”Π²Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для этих Ρ†Π΅Π»Π΅ΠΉ, – это ‘printf‘ ΠΈ ‘echo‘.

Π₯отя ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ, ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ различия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ подходящСй для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… случаСв использования.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим сходства ΠΈ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ‘printf’ ΠΈ ‘echo’, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Π²Π°ΡˆΠΈΡ… скриптах Bash.

ΠžΠ±Π·ΠΎΡ€ Printf ΠΈ Echo:

Printf

Printf, сокращСниС ΠΎΡ‚ “print formatted”, – это ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΠ· языка программирования C.

Она обСспСчиваСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ способ отобраТСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° Π² скриптах Bash.

Команда printf позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ строку Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, которая слуТит шаблоном для Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’ строку Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ подставлСны ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Echo

Echo – это Π±ΠΎΠ»Π΅Π΅ простая ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для Π²Ρ‹Π²ΠΎΠ΄Π° строки тСкста ΠΈΠ»ΠΈ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Она автоматичСски добавляСт символ Π½ΠΎΠ²ΠΎΠΉ строки Π² ΠΊΠΎΠ½Ρ†Π΅ Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ ‘-n’.

Π₯отя echo Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ возмоТностями форматирования, ΠΊΠ°ΠΊ printf, ΠΎΠ½Π° ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² скриптах Bash благодаря своСй простотС ΠΈ удобству использования.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Printf ΠΈ Echo

ВозмоТности форматирования

ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ printf ΠΈ echo Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΈΡ… возмоТностях форматирования.

Printf прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр ΠΎΠΏΡ†ΠΈΠΉ форматирования, позволяя Π²Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π°.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, echo Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠΏΡ†ΠΈΠΉ форматирования, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΌΠ΅Π½Π΅Π΅ подходящим для слоТных Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ.

Бинтаксис

Printf Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ строку Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², подставляСмых Π² строку Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

Бинтаксис Ρƒ printf ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Echo Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ строки форматирования, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ.

Бинтаксис для echo ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

echo [option] arg1 arg2 ...

Π‘ΠΈΠΌΠ²ΠΎΠ» Π½ΠΎΠ²ΠΎΠΉ строки

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ echo добавляСт символ Π½ΠΎΠ²ΠΎΠΉ строки ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ printf этого Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ символ Π½ΠΎΠ²ΠΎΠΉ строки Π² echo, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ ‘-n’.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ символ Π½ΠΎΠ²ΠΎΠΉ строки Π² printf, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² строку Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ‘\n’.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Printf

Printf идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ситуаций, ΠΊΠΎΠ³Π΄Π° трСбуСтся Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Π’Ρ‹Π²ΠΎΠ΄ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

printf "%-10s %-10s %-10s\n" "Name" "Age" "City"
printf "%-10s %-10d %-10s\n" "Alice" 28 "New York"
printf "%-10s %-10d %-10s\n" "Bob" 32 "Los Angeles

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ:

pi=3.1415926535
printf "Value of Pi: %.2f\n" $pi

Echo

Echo ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для простого отобраТСния тСкста ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±Π΅Π· Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Π’Ρ‹Π²ΠΎΠ΄ сообщСния:

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

greeting="Hello, World!"

echo $greeting

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ†Π΅Π»ΠΎΠΌ, хотя ΠΈ printf, ΠΈ echo ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для отобраТСния Π²Ρ‹Π²ΠΎΠ΄Π° Π² скриптах Bash, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ явныС различия Π² возмоТностях форматирования ΠΈ синтаксисС.

Printf ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΌΠΎΡ‰Π½Ρ‹Π΅ возмоТности форматирования, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ для ситуаций, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ контроля Π½Π°Π΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄Π°.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, echo ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ Π»Π΅Π³Ρ‡Π΅ Π² использовании, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ подходящим для Π²Ρ‹Π²ΠΎΠ΄Π° основного тСкста ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

ПониманиС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… случаСв использования ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π½ΡƒΠΆΠ΄ Π² Π²Π°ΡˆΠΈΡ… скриптах Bash.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скриптами Bash, Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈ printf, ΠΈ echo ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ инструмСнтами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΡˆΠΈΡ… скриптов.

см. Ρ‚Π°ΠΊΠΆΠ΅:

You may also like

Leave a Comment