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

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

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

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ограничСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания Π²Π²ΠΎΠ΄Π° ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² сцСнариях Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Π½ΠΎ это Ρ‚Ρ€Π΅Π±ΡƒΡ‚ довольно слоТных ΠΌΠ°Ρ…ΠΈΠ½Π°Ρ†ΠΈΠΉ. Как ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° оТидания ΠΏΠΎ сигналу. Но это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ написаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сигналов ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ trap (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 29-5).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-2. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания Π²Π²ΠΎΠ΄Π°

#!/bin/bash

# timed-input.sh


# TMOUT=3 бСсполСзно Π² сцСнариях


TIMELIMIT=3 # Π’Ρ€ΠΈ сСкунды Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСно ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅


PrintAnswer()

{

if [ "$answer" = TIMEOUT ]

then

echo $answer

else # Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΏΡƒΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π°.

echo "Π’Π°ΡˆΠ΅ любимоС растСниС $answer"

kill $! # "ΠŸΡ€ΠΈΠ±ΠΈΡ‚ΡŒ" Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ TimerOn, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΡƒΡŽ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ процСссС.

# $! -- PID послСднСго процСсса, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ„ΠΎΠ½Π΅.

fi


}


TimerOn()

{

sleep $TIMELIMIT && kill -s 14 $$ &

# Π–Π΄Π°Ρ‚ΡŒ 3 сСкунды, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹Π΄Π°Ρ‚ΡŒ sigalarm ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ.

}


Int14Vector()

{

answer="TIMEOUT"

PrintAnswer

exit 14

}


trap Int14Vector 14 # ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСрывания ΠΎΡ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° (14)


echo "Π’Π°ΡˆΠ΅ любимоС растСниС? "

TimerOn

read answer

PrintAnswer


# По ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ·Π½Π°Π½ΠΈΡŽ, это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ ограничСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания,

#+ ΠΎΠ΄Π½Π°ΠΊΠΎ опция "-t"ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "read" ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ.

# Π‘ΠΌ. "t-out.sh", Π½ΠΈΠΆΠ΅.


# Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ элСгантноС...

#+ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C ΠΈΠ»ΠΈ C++,

#+ с использованиСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ 'alarm' ΠΈ 'setitimer'.


exit 0

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ stty.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-3. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ограничСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания Π²Π²ΠΎΠ΄Π° ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

#!/bin/bash

# timeout.sh


# Автор: Stephane Chazelas,

# Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.


INTERVAL=5 # ΠΏΡ€Π΅Π΄Π΅Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания


timedout_read() {

timeout=$1

varname=$2

old_tty_settings=`stty -g`

stty -icanon min 0 time ${timeout}0

eval read $varname # ΠΈΠ»ΠΈ просто read $varname

stty "$old_tty_settings"

# Π‘ΠΌ. man stty.

}


echo; echo -n "Как Вас Π·ΠΎΠ²ΡƒΡ‚? ΠžΡ‚Π²Π΅Ρ‡Π°ΠΉΡ‚Π΅ быстрСС! "

timedout_read $INTERVAL your_name


# Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ².

# МаксимальноС врСмя оТидания зависит ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

# (Ρ‡Π°Ρ‰Π΅ всСго это 25.5 сСкунд).


echo


if [ ! -z "$your_name" ] # Если имя Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ...

then

echo "Вас Π·ΠΎΠ²ΡƒΡ‚ $your_name."

else

echo "Π’Ρ‹ Π½Π΅ успСли ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ."

fi


echo


# Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого сцСнария отличаСтся ΠΎΡ‚ "timed-input.sh".

# КаТдоС Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сброс счСтчика Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС.


exit 0

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ самый простой способ -- ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ -t ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ read.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-4. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ read

#!/bin/bash

# t-out.sh


TIMELIMIT=4 # 4 сСкунды


read -t $TIMELIMIT variable <&1


echo


if [ -z "$variable" ]

then

echo "ВрСмя оТидания истСкло."

else

echo "variable = $variable"

fi


exit 0

$UID

user id number

UID (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€) Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π² соотвСтствии с /etc/passwd

Π­Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ UID Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π» ΠΏΡ€Π°Π²Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ su. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $UID доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-5. Π― -- root?

#!/bin/bash

# am-i-root.sh: Root я, или нС root?


ROOT_UID=0 # $UID root-Π° всСгда Ρ€Π°Π²Π΅Π½ 0.


if [ "$UID" -eq "$ROOT_UID" ] # Настоящий "root"?

then

echo "- root!"

else

echo "простой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (Π½ΠΎ ΠΌΠ°ΠΌΠΎΡ‡ΠΊΠ° вас Ρ‚ΠΎΠΆΠ΅ Π»ΡŽΠ±ΠΈΡ‚)!"

fi


exit 0


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

# Код, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚,

#+ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Π° сцСнария ΡƒΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ Π²Ρ‹ΡˆΠ΅


# Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ root-Π° ΠΎΡ‚ Π½Π΅ root-Π°:


ROOTUSER_NAME=root


username=`id -nu` # Или... username=`whoami`

if [ "$username" = "$ROOTUSER_NAME" ]

then

echo "Π ΡƒΡ‚Ρ‚ΠΈ-Ρ‚ΡƒΡ‚Ρ‚ΠΈ. - root!"

else

echo "Π’Ρ‹ - лишь ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΡŽΠ·Π΅Ρ€."

fi

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2-2.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ $ENV, $LOGNAME, $MAIL, $TERM, $USER ΠΈ $USERNAME, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ встроСнными ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Bash. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ΠΈ часто ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· стартовых Ρ„Π°ΠΉΠ»ΠΎΠ² Bash. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $SHELL, командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² /etc/passwd ΠΈΠ»ΠΈ Π² сцСнарии "init" ΠΈ ΠΎΠ½Π° Ρ‚ΠΎΠΆΠ΅ Π½Π΅ являСтся встроСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Bash.

tcsh% echo $LOGNAME

bozo

tcsh% echo $SHELL

/bin/tcsh

tcsh% echo $TERM

rxvt


bash$ echo $LOGNAME

bozo

bash$ echo $SHELL

/bin/tcsh

bash$ echo $TERM

rxvt


ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹)

$0, $1, $2 ΠΈ Ρ‚.Π΄.

Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ... ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² сцСнарий, функциям ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ set (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4-5 ΠΈ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-13)

$#

количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки[ 20 ], ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 33-2)

$*

ВсС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ строки (слова)

[email protected]

Π’ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ $*, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ прСдставлСн ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ строка (слово), Ρ‚.Π΅. ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-6. arglist: Π’Ρ‹Π²ΠΎΠ΄ списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… $* ΠΈ [email protected]

#!/bin/bash

# Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ сцСнарий с нСсколькими Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: "ΠΎΠ΄ΠΈΠ½ Π΄Π²Π° Ρ‚Ρ€ΠΈ".


E_BADARGS=65


if [ ! -n "$1" ]

then

echo "ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ использования: `basename $0` argument1 argument2 ΠΈ Ρ‚.Π΄."

exit $E_BADARGS

fi


echo


index=1


echo "Бписок Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ \"\$*\":"

for arg in "$*" # Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Ссли "$*" Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ.

do

echo "АргумСнт #$index = $arg"

let "index+=1"

done # $* воспринимаСт всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ строку.

echo "ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² выглядит ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° строка."


echo


index=1


echo "Бписок Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ \"\ [email protected]\":"

for arg in " [email protected]"

do

echo "АргумСнт #$index = $arg"

let "index+=1"

done # [email protected] воспринимаСт Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ строки (слова).

echo "Бписок Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² выглядит ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… строк (слов)."


echo


exit 0

ПослС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ shift (сдвиг), ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ [email protected], тСряСтся, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ "Π²Π½ΠΈΠ·" (ΠΈΠ»ΠΈ "Π²Π»Π΅Π²ΠΎ", Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅).

#!/bin/bash

# Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ сцСнарий Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅: ./scriptname 1 2 3 4 5


echo " [email protected]" # 1 2 3 4 5

shift

echo " [email protected]" # 2 3 4 5

shift

echo " [email protected]" # 3 4 5


# КаТдая ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ "shift" ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° $1,

# Π½ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² " [email protected]".


Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ пСрСмСнная [email protected] ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠ° Π²Π²ΠΎΠ΄Π° Π² сцСнария. Команда cat " [email protected]" позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π²Π²ΠΎΠ΄ ΠΊΠ°ΠΊ со стандартного устройства Π²Π²ΠΎΠ΄Π° stdin, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ пСрСдаСтся ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-17 ΠΈ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-18.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ $* ΠΈ [email protected], Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ! Π­Ρ‚ΠΎ зависит ΠΎΡ‚ содСрТимого ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $IFS.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-7. ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… $* ΠΈ [email protected]

#!/bin/bash