Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 29

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ (Π½Π° stdout) Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ содСрТимоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4-1).

echo Hello

echo $a


Для Π²Ρ‹Π²ΠΎΠ΄Π° экранированных символов, echo Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° -e. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5-2.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄Π² echo Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки. ΠŸΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ это символа ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -n.

Команда echo ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ.

if echo "$VAR" | grep -q txt # if [[ $VAR = *txt* ]]

then

echo "$VAR содСрТит подстроку \"txt\""

fi


ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄Π° echo, Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с подстановкой ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ‡Π°Π²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присвоСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

a=`echo "HELLO" | tr A-Z a-z`

Π‘ΠΌ. Ρ‚Π°ΠΊ ΠΆΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-15, ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-2, ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-32 ΠΈ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-33.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° echo `command` ΡƒΠ΄Π°Π»ΠΈΡ‚ всС символы ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ command.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $IFS ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки \n, ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ символа. Bash Ρ€Π°Π·ΠΎΠ±ΡŒΠ΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ command, ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΌ символам, Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ пСрСдаст ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π΅ echo, которая Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ эти Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.

bash$ ls -l /usr/share/apps/kjezz/sounds

-rw-r--r-- 1 root root 1407 Nov 7 2000 reflect.au

-rw-r--r-- 1 root root 362 Nov 7 2000 seconds.au


bash$ echo `ls -l /usr/share/apps/kjezz/sounds`

total 40 -rw-r--r-- 1 root root 716 Nov 7 2000 reflect.au -rw-r--r-- 1 root root 362 Nov 7 2000 seconds.au


Π­Ρ‚ΠΎ встроСнная ΠΊΠΎΠΌΠ°Π½Π΄Π° Bash ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ внСшний Π°Π½Π°Π»ΠΎΠ³ /bin/echo.

bash$ type -a echo

echo is a shell builtin

echo is /bin/echo


printf

printf -- ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf() Π² языкС C, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ синтаксис ΠΈΡ… нСсколько отдичаСтся Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°.

printf format-string... parameter...

Π­Ρ‚ΠΎ встроСнная ΠΊΠΎΠΌΠ°Π½Π΄Π° Bash. Π˜ΠΌΠ΅Π΅Ρ‚ внСшний Π°Π½Π°Π»ΠΎΠ³ /bin/printf ΠΈΠ»ΠΈ /usr/bin/printf. Π—Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ страницам справочного руководства man 1 printf ΠΏΠΎ систСмным ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ.

Π‘Ρ‚Π°Ρ€Ρ‹Π΅ вСрсии Bash ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ printf.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-1. printf Π² дСйствии

#!/bin/bash

# printf demo


# ΠžΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°:

# Π‘Ρ‡ΠΈΡ‚Π°ΡŽ своим Π΄ΠΎΠ»Π³ΠΎΠΌ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² качСствС раздСлитСля Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈ Ρ†Π΅Π»ΠΎΠΉ

# частСй Π² вСщСствСнных числах, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ символ "запятая"

# (Π² русских локалях), поэтому Π΄Π°Π½Π½Ρ‹ΠΉ сцСнарий ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ сообщСниС

# ΠΎΠ± ошибкС (Ρƒ мСня Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ) ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ числа PI.

# Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ числа PI Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ

# Π½Π° Π·Π°ΠΏΡΡ‚ΡƒΡŽ -- это Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ. ;-)


PI=3,14159265358979

DecimalConstant=31373

Message1="ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ,"

Message2="ЗСмлянин."


echo


printf "Число ΠΏΠΈ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 2 Π·Π½Π°ΠΊΠ° послС запятой = %1.2f" $PI

echo

printf "Число ΠΏΠΈ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 9 Π·Π½Π°ΠΊΠ° послС запятой = %1.9f" $PI # Π”Π°ΠΆΠ΅ округляСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.


printf "\n" # ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки,


printf "ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° = \t%d\n" $DecimalConstant # ВставлСн символ табуляции (\t)


printf "%s %s \n" $Message1 $Message2


echo


# ==========================================#

# Эмуляция Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 'sprintf' Π² языкС C.

# Π—Π°ΠΏΠΈΡΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ строки Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.


echo


Pi12=$(printf "%1.12f" $PI)

echo "Число ΠΏΠΈ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 12 Π·Π½Π°ΠΊΠ° послС запятой = $Pi12"


Msg=`printf "%s %s \n" $Message1 $Message2`

echo $Msg; echo $Msg


exit 0

Одно ΠΈΠ· ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ printf -- Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…

E_BADDIR=65


var=nonexistent_directory


error()

{

printf " [email protected]" >&2

# Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π° stderr.

echo

exit $E_BADDIR

}


cd $var || error $"НСвозмоТно ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ %s." "$var"


# Бпасибо S.C.


read

"Π§ΠΈΡ‚Π°Π΅Ρ‚" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с устройства стандартного Π²Π²ΠΎΠ΄Π° -- stdin, Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ. ΠšΠ»ΡŽΡ‡ -a позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ значСния Π² массивы (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 25-3).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-2. Π’Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ read

#!/bin/bash


echo -n "Π΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ 'var1': "

# ΠšΠ»ΡŽΡ‡ -n подавляСт Π²Ρ‹Π²ΠΎΠ΄ символа ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки.


read var1

# ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ -- ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ отсутствуСт символ '$'.


echo "var1 = $var1"


echo


# Одной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ 'read' ΠΌΠΎΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

echo -n "Π΄ΠΈΡ‚Π΅ значСния для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… 'var2' ΠΈ 'var3' (Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈΠ»ΠΈ Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ): "

read var2 var3

echo "var2 = $var2 var3 = $var3"

# Если Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ вторая останСтся "пустой".


exit 0

Если ΠΊΠΎΠΌΠ°Π½Π΄Π΅ read Π½Π΅ Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ Π²Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ осущСствлСн Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $REPLY.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ read Π±Π΅Π· указания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для Π²Π²ΠΎΠ΄Π°

#!/bin/bash


echo


# -------------------------- #

# ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°.

echo -n "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: "

read var

echo "\"var\" = "$var""

# Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ.

# -------------------------- #


echo


echo -n "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: "

read # Команда 'read' употрСбляСтся Π±Π΅Π· указания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для Π²Π²ΠΎΠ΄Π°,

#+ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅...

#+ По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Π²ΠΎΠ΄ осущСствляСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $REPLY.

var="$REPLY"

echo "\"var\" = "$var""

# Π­Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ сцСнария эквивалСнтна ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅.


echo


exit 0

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ Π² ΠΎΠΊΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "read", символ \ слуТит для экранирования символа ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки. ΠšΠ»ΡŽΡ‡ -r заставляСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символ \ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ символ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-4. Π’Π²ΠΎΠ΄ многострочного тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ read

#!/bin/bash


echo


echo "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ строку, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΡƒΡŽΡΡ символом \\, ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ENTER."

echo "Π—Π°Ρ‚Π΅ΠΌ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку, ΠΈ снова Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ENTER."

read var1 # ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ, символ "\" экранируСт ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки.

# пСрвая строка \

# вторая строка


echo "var1 = $var1"

# var1 = пСрвая строка вторая строка


# ПослС Π²Π²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅ΠΉΡΡ символом "\",

# Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ строкС.


echo; echo


echo "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΡƒΡŽ строку, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΡƒΡŽΡΡ символом \\, ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ENTER."

read -r var2 # ΠšΠ»ΡŽΡ‡ -r заставляСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "read" Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ "\"

# ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ символ.

# пСрвая строка \


echo "var2 = $var2"

# var2 = пСрвая строка \


# Π’Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… прСкращаСтся сразу ΠΆΠ΅ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ наТатия Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ENTER.


echo


exit 0

Команда read ΠΈΠΌΠ΅Π΅Ρ‚ ряд ΠΎΡ‡Π΅Π½ΡŒ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ подсказку - ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎ Π²Π²ΠΎΠ΄Ρƒ (prompt), ΠΈ Π΄Π°ΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ доТидаясь наТатия Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ENTER.

# Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ доТидаясь наТатия Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ENTER.


read -s -n1 -p "НаТмитС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ " keypress

echo; echo "Π‘Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° клавиша "\"$keypress\""."


# -s -- подавляСт эхо-Π²Ρ‹Π²ΠΎΠ΄, Ρ‚.Π΅. Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π΅ отобраТаСтся Π½Π° экранС.

# -n N -- Π²Π²ΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ автоматичСски, сразу ΠΆΠ΅ послС Π²Π²ΠΎΠ΄Π° N-Π³ΠΎ символа.

# -p -- Π·Π°Π΄Π°Π΅Ρ‚ Π²ΠΈΠ΄ строки подсказки - ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ ΠΊ Π²Π²ΠΎΠ΄Ρƒ (prompt).


# ИспользованиС этих ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ослоТняСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС.


ΠšΠ»ΡŽΡ‡ -n, ΠΊΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, позволяСт ΠΊΠΎΠΌΠ°Π½Π΄Π΅ read ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ курсорных ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… слуТСбных клавиш.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-5. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ наТатия Π½Π° курсорныС клавиши

#!/bin/bash