ο· # Π½ΠΎ ΡΠ΅ΡΠ΅Π· Π³ΠΎΠ΄-Π΄ΡΡΠ³ΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΡΠΆΠ΅Π»ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ -- ΡΡΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ.
ο· # (ΠΠ· ΡΡΠ΅Π½Π°ΡΠΈΡ "pw.sh", Π°Π²ΡΠΎΡ: Antek Sawicki)
ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ.
#!/bin/bash
#************************************************#
# xyz.sh #
# Π°Π²ΡΠΎΡ: Bozo Bozeman #
# ΠΡΠ»Ρ 05, 2001 #
# #
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ°. #
#************************************************#
BADDIR=65 # ΠΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
projectdir=/home/bozo/projects # ΠΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
# ------------------------------------------------------- #
# cleanup_pfiles () #
# Π£Π΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. #
# ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: $target_directory #
# ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: 0 -- Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π°, #
# $BADDIR -- Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ. #
# ------------------------------------------------------- #
cleanup_pfiles ()
{
if [ ! -d "$1" ] # ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
then
echo "$1 -- Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ."
return $BADDIR
fi
rm -f "$1"/*
return 0 # Π£ΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
}
cleanup_pfiles $projectdir
exit 0
ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡ Π²Π°Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Ρ sha-bang -- #!/bin/bash.
ο· ΠΠ°ΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Π²Π°Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π΅ ΠΎΠΏΠ°ΡΠ°ΡΡΡ Π·Π° Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ.
ο· if [ -f /var/log/messages ]
ο· then
ο· ...
ο· fi
ο· # ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅, ΡΡΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡ Π»Π΅Ρ
ο· # Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ /var/log/messages Π½Π° /var/log/syslog.
ο· # Π’ΠΎΠ³Π΄Π° Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΡΡΡΠΊΠ°ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ,
ο· # ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ /var/log/messages, ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ Π½Π° /var/log/syslog.
ο· # Π ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· -- Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΠ»ΠΈ Π»ΠΈ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ.
ο·
ο· # ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ "ΠΊΠΎΠ½ΡΡΠ°Π½Ρ" Π΄Π°Π΅Ρ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±:
ο· LOGFILE=/var/log/messages # ΠΡΠ»ΠΈ ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.
ο· if [ -f "$LOGFILE" ]
ο· then
ο· ...
ο· fi
ο· Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ.
ο· fl=`ls -al $dirname` # ΠΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄Π°ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ο· file_listing=`ls -al $dirname` # Π£ΠΆΠ΅ Π»ΡΡΡΠ΅.
ο·
ο· MAXVAL=10 # ΠΠΈΡΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅.
ο· while [ "$index" -le "$MAXVAL" ]
ο· ...
ο·
ο· E_NOTFOUND=75 # ΠΠΌΠ΅Π½Π° ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ -- Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅,
ο· # ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅, ΠΈΡ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ "E_".
ο· if [ ! -e "$filename" ]
ο· then
ο· echo "Π€Π°ΠΉΠ» $filename Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½."
ο· exit $E_NOTFOUND
ο· fi
ο·
ο· MAIL_DIRECTORY=/var/spool/mail/bozo # ΠΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
ο· # ΡΠ°ΠΊ ΠΆΠ΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ
ο· # Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅.
ο· export MAIL_DIRECTORY
ο·
ο· GetAnswer () # Π‘ΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΠ΅ΡΠΈΡΡΡΠΎΠ²
ο· # ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠΉ.
ο· {
ο· prompt=$1
ο· echo -n $prompt
ο· read answer
ο· return $answer
ο· }
ο·
ο· GetAnswer "ΠΠ°ΡΠ΅ Π»ΡΠ±ΠΈΠΌΠΎΠ΅ ΡΠΈΡΠ»ΠΎ? "
ο· favorite_number=$?
ο· echo $favorite_number
ο·
ο· _uservariable=23 # ΠΠΎΠΏΡΡΡΠΈΠΌΠΎ, Π½ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ.
ο· # ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π»ΠΈΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.
ο· # Π’Π°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ο· ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΌΡΡΠ»ΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ ΠΊΠΎΠ΄ΠΎΠ² Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
ο· E_WRONG_ARGS=65
ο· ...
ο· ...
ο· exit $E_WRONG_ARGS
Π‘ΠΌ. ΡΠ°ΠΊ ΠΆΠ΅ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ C.
ο· Π Π°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π° ΡΠ΅ΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΠΈ ΠΏΡΠΎΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. Π‘ΠΌ. ΠΡΠΈΠΌΠ΅Ρ 34-4.
ο· ΠΠ΅ ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΡΡΡΠΌΠΈ.
ο· COMMAND
ο· if [ $? -eq 0 ]
ο· ...
ο· # ΠΠ·Π±ΡΡΠΎΡΠ½ΠΎ ΠΈ Π½Π΅ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ.
ο·
ο· if COMMAND
ο· ...
ο· # ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ.
... ΡΠΈΡΠ°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π½Π° Bourne shell (/bin/sh). Π― Π±ΡΠ» ΠΏΠΎΡΡΡΡΠ΅Π½ ΡΠ΅ΠΌ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π― Π½Π΅ ΡΠ°Π· ΡΠΏΡΠ°ΡΠΈΠ²Π°Π» ΡΠ΅Π±Ρ: "ΠΠ΅ΡΠΆΠ΅Π»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π³ΠΎΡΠ΄ΠΈΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ?"
Landon Noll
ΠΠ»Π°Π²Π° 33. Π Π°Π·Π½ΠΎΠ΅
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Bourne shell-Π°. ΠΠ°ΠΆΠ΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² Π½Π΅ Π΄Π°Π΅Ρ Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ.
Tom Duff
33.1. ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΈ Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ
Π ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΡΠΈΡΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π° tty. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΠ°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π° Π·Π°ΠΏΡΡΠΊΠ΅, Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΡ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΊ Π²Π²ΠΎΠ΄Ρ (prompt), ΠΈ, ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΡΠΌΠΈ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ.
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠΎ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ, ΠΎΠ½ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ tty. Π Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ.
#!/bin/bash
MY_PROMPT='$ '
while :
do
echo -n "$MY_PROMPT"
read line
eval "$line"
done
exit 0
# ΠΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΠΊ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½
# Stephane Chazelas (ΡΠΏΠ°ΡΠΈΠ±ΠΎ).
ΠΡΠ΄Π΅ΠΌ ΡΡΠΈΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²Π²ΠΎΠ΄ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ read (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ 11-2). Π "ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ" Π²ΡΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠΎΠΊΠ° ΠΆΠ΅, Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠ°ΠΌΠΊΠ°ΠΌΠΈ tty, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π±ΡΠ» Π·Π°ΠΏΡΡΠ΅Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌa, Ρ.Π΅ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΎΠΊΠ½ΠΎ xterm.
Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ -- ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ΄Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅ Π±Π΅Π· Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π².
ΠΠ΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½Π΅, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ -- ΠΏΠΎΠ΄Π²ΠΈΡΠ°ΡΡ, ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ , ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ Ρ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ expect-ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΠ»ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. Π ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ read (read variable <file). ΠΡΠΈ ΠΏΡΠΈΠ΅ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ, ΡΠ°ΠΊ ΠΈ Π² Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ .
ΠΡΠ»ΠΈ Π²Π½ΡΡΡΠΈ ΡΡΠ΅Π½Π°ΡΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ -- ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΈΠ»ΠΈ Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ $PS1.
if [ -z $PS1 ] # ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ?
then
# Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ
...
else
# ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ
...
fi
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± -- ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ»Π°Π³Π° "i" Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $-.
case $- in
*i*) # ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ
;;
*) # Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ
;;
# (ΠΠ· "UNIX F.A.Q.," 1993)
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ»ΡΡ -i Π² ΡΡΡΠΎΠΊΠ΅-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ #!/bin/bash -i. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π² ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π΄Π°ΠΆΠ΅ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΠΎ ΡΡΡΠΈ, Π½Π΅Ρ.
33.2. Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ-ΠΎΠ±Π΅ΡΡΠΊΠΈ
"ΠΠ±Π΅ΡΡΠΊΠΈ" -- ΡΡΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΡΡΠΈΠ»ΠΈΡ, Ρ Π΄Π»ΠΈΠ½Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΠΏΡΠΈΠ΅ΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²Π²ΠΎΠ΄ΠΈΡΡ Π²ΡΡΡΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ½ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ sed ΠΈ awk.
Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ sed ΠΈΠ»ΠΈ awk, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΡΠΎΡΠΌΠ΅: sed -e 'commands' ΠΈΠ»ΠΈ awk 'commands'. "ΠΠ°Π²ΠΎΡΠ°ΡΠΈΠ²Π°Ρ" ΡΠ°ΠΊΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ Π΄Π»Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΡ ΠΏΡΠΈΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ²Ρ sed ΠΈ awk, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ Π½Π° Π²Ρ ΠΎΠ΄ Π΄ΡΡΠ³ΠΎΠΉ.
ΠΡΠΈΠΌΠ΅Ρ 33-1. ΡΡΠ΅Π½Π°ΡΠΈΠΉ-ΠΎΠ±Π΅ΡΡΠΊΠ°
#!/bin/bash
# ΠΡΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²Ρ ΠΎΠ΄Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ.
#
# ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ,
# Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:
# if [ -z "$1" ]
# then
# echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: `basename $0` ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ_ΡΠ°ΠΉΠ»"
# exit 65
# fi
# ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ,
# ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±ΡΠ°ΡΡ
# sed -e '/^$/d' filename
sed -e /^$/d "$1"
# '-e' -- ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ "editing" (ΠΏΡΠ°Π²ΠΊΠ°), Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π΅Π΄ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
# '^' -- Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ, '$' -- Π΄ΠΎ Π΅Π΅ ΠΊΠΎΠ½ΡΠ°.
# Π§ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΡΠΎΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ Π½Π°ΡΠ°Π»ΠΎΠΌ ΠΈ ΠΊΠΎΠ½ΡΠΎΠΌ ΡΡΡΠΎΠΊΠΈ,
#+ Ρ.Π΅. -- ΠΏΡΡΡΡΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ.
# 'd' -- ΠΊΠΎΠΌΠ°Π½Π΄Π° "delete" (ΡΠ΄Π°Π»ΠΈΡΡ).
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Π²ΡΡΠ΅ΠΊ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ
#+ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ, ΡΡΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ.
exit 0
ΠΡΠΈΠΌΠ΅Ρ 33-2. ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π½Π°ΡΠΈΡ-ΠΎΠ±Π΅ΡΡΠΊΠΈ
#!/bin/bash
# "subst", Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ Π·Π°ΠΌΠ΅Π½Ρ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ
# Ρ.Π΅., "subst Smith Jones letter.txt".