exit 0
Π‘ΠΊΠΎΠ±ΠΎΡΠ½Π°Ρ Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π°Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΌΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ.
args=$# # ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
lastarg=${!args} # ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: lastarg=${!$#} Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ.
Π ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ $0 -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΡΡΠ΅Π½Π°ΡΠΈΡ. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠ°ΠΉΠ» ΡΡΠ΅Π½Π°ΡΠΈΡ.
ΠΡΠ»ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΡΠΎ ΠΏΡΠΈ ΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠΈΡ "ΠΏΡΡΡΡΠ΅" ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π±ΠΎΡΡΠ±Ρ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ -- Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΎΠ±Π΅ΠΈΡ ΡΠ°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
variable1_=$1_
# ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
critical_argument01=$variable1_
# ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ "ΡΠ±ΡΠ°ΡΡ" ΠΏΠΎΠ·Π΄Π½Π΅Π΅.
# ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
variable1=${variable1_/_/} # ΠΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
# $variable1_ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° "_".
# ΠΠ΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌΡΡ Π² ΠΠ»Π°Π²Π΅ 9.
# ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° Π·Π°ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ.
# ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ
#+ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π½Π°Π»ΠΈΡΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
if [ -z $1 ]
then
exit $POS_PARAMS_MISSING
fi
---
ΠΡΠΈΠΌΠ΅Ρ 4-6. wh, whois Π²ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΎΠΌΠ΅Π½Π°
#!/bin/bash
# ΠΠΎΠΌΠ°Π½Π΄Π° 'whois domain-name' Π²ΡΡΡΠ½ΡΠ΅Ρ ΠΈΠΌΡ Π΄ΠΎΠΌΠ΅Π½Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· 3 ΡΠ΅ΡΠ²Π΅ΡΠΎΠ²:
# ripe.net, cw.net, radb.net
# Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ 'wh' Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /usr/local/bin
# Π’ΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ:
# ln -s /usr/local/bin/wh /usr/local/bin/wh-ripe
# ln -s /usr/local/bin/wh /usr/local/bin/wh-cw
# ln -s /usr/local/bin/wh /usr/local/bin/wh-radb
if [ -z "$1" ]
then
echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: `basename $0` [domain-name]"
exit 65
fi
case `basename $0` in
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈΠΌΠ΅Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠ° ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈΠΌΠ΅Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°
"wh" ) whois [email protected];;
"wh-ripe") whois [email protected];;
"wh-radb") whois [email protected];;
"wh-cw" ) whois [email protected];;
* ) echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: `basename $0` [domain-name]";;
esac
exit 0
---
ΠΠΎΠΌΠ°Π½Π΄Π° shift "ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ" ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠΌΠ΅ΡΡΡ "ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ" Π½Π° ΠΎΠ΄Π½Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π²Π»Π΅Π²ΠΎ.
$1 <--- $2, $2 <--- $3, $3 <--- $4, ΠΈ Ρ.Π΄.
ΠΡΠ΅ΠΆΠ½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ $1 ΡΠ΅ΡΡΠ΅ΡΡΡ, Π½ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ $0 (ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΡΡΠ΅Π½Π°ΡΠΈΡ) ΠΎΡΡΠ°Π΅ΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Ρ ΠΎΠ΄Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° shift ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ, Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠ΅ 9, Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ {ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ}.
ΠΡΠΈΠΌΠ΅Ρ 4-7. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ shift
#!/bin/bash
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 'shift' Ρ ΡΠ΅Π»ΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π²ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
# ΠΠ°Π·ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΡΡΠΈΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ "shft",
#+ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ Ρ Π½Π°Π±ΠΎΡΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
# ./shft a b c def 23 skidoo
until [ -z "$1" ] # ΠΠΎ ΡΠ΅Ρ ΠΏΠΎΡ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Ρ Π²ΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ...
do
echo -n "$1 "
shift
done
echo # ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°.
exit 0
ΠΠΎΠΌΠ°Π½Π΄Π° shift ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΠΊ Π²Ρ ΠΎΠ΄Π½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ. Π‘ΠΌ. ΠΡΠΈΠΌΠ΅Ρ 33-10.
ΠΠ»Π°Π²Π° 5. ΠΠ°Π²ΡΡΠΊΠΈ
ΠΠ°Π²ΡΡΠΊΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Ρ ΠΎΠ±Π΅ΠΈΡ ΡΡΠΎΡΠΎΠ½, ΡΠ»ΡΠΆΠ°Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΡΡΠΎΠΊΠ΅. (Π‘ΠΈΠΌΠ²ΠΎΠ» Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ "ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ", Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΌΡΡΠ»ΠΎΠ²ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠ°Π±Π»ΠΎΠ½Π° -- *.)
bash$ ls -l [Vv]*
-rw-rw-r-- 1 bozo bozo 324 Apr 2 15:05 VIEWDATA.BAT
-rw-rw-r-- 1 bozo bozo 507 May 4 14:25 vartrace.sh
-rw-rw-r-- 1 bozo bozo 539 Apr 14 17:11 viewdata.sh
bash$ ls -l '[Vv]*'
ls: [Vv]*: No such file or directory
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΡΠΈΠ»ΠΈΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ.
bash$ grep '[ΠΠΏ]Π΅ΡΠ²Π°Ρ' *.txt
file1.txt:ΠΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° Π² file1.txt.
file2.txt:ΠΡΠΎ ΠΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° Π² file2.txt.
ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ "Π½Π΅ ΠΎΠΊΠ°Π²ΡΡΠ΅Π½Π½ΡΠΉ" Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ grep [ΠΠΏ]Π΅ΡΠ²Π°Ρ *.txt Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Bash, Π½ΠΎ Π½Π΅ Π² tcsh.
ΠΠΎΠΎΠ±ΡΠ΅, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ (" ") ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ Π² ΠΈΠΌΠ΅Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ $, ` (ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΠΊΠ°Π²ΡΡΠΊΠ°) ΠΈ \ (escape -- ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΡΠ»ΡΡ)[ 14 ]. Π’ΠΎ, ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» $ ΠΏΠΎΠΏΠ°Π» Π² ΡΠ°Π·ΡΡΠ΄ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π΄Π²ΠΎΠΉΠ½ΡΠΌΠΈ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ ("$variable"), Ρ.Π΅. Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ 4-1, Π²ΡΡΠ΅).
ΠΠ²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠ»ΠΎΠ²Π°[ 15 ]. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ - ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ.
variable1="a variable containing five words"
COMMAND This is $variable1 # ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ COMMAND Ρ 7 Π²Ρ ΠΎΠ΄Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ:
# "This" "is" "a" "variable" "containing" "five" "words"
COMMAND "This is $variable1" # ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ COMMAND Ρ ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ ΠΎΠ΄Π½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ:
# "This is a variable containing five words"
variable2="" # ΠΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
COMMAND $variable2 $variable2 $variable2 # ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ COMMAND Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
COMMAND "$variable2" "$variable2" "$variable2" # ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ COMMAND Ρ 3 "ΠΏΡΡΡΡΠΌΠΈ" Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
COMMAND "$variable2 $variable2 $variable2" # ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ COMMAND Ρ 1 Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ (ΠΈ 2 ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ).
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ S.C.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ echo Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΡΠΎΠΏΡΡΠΆΠ΅Π½ΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΡΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 5-1. ΠΡΠ²ΠΎΠ΄ "ΠΏΡΠΈΡΡΠ΄Π»ΠΈΠ²ΡΡ " ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
#!/bin/bash
# weirdvars.sh: ΠΡΠ²ΠΎΠ΄ "ΠΏΡΠΈΡΡΠ΄Π»ΠΈΠ²ΡΡ " ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
var="'(]\\{}\$\""
echo $var # '(]\{}$"
echo "$var" # '(]\{}$" ΠΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ.
echo
IFS='\'
echo $var # '(] {}$" \ ΡΠΈΠΌΠ²ΠΎΠ»-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² ΠΏΡΠΎΠ±Π΅Π».
echo "$var" # '(]\{}$"
# ΠΡΠΈΠΌΠ΅ΡΡ Π²ΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ S.C.
exit 0
ΠΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ (' ') ΡΡ ΠΎΠΆΠΈ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π΄Π²ΠΎΠΉΠ½ΡΠΌΠΈ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» "$" Π²Π½ΡΡΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΡ ΠΊΠ°Π²ΡΡΠ΅ΠΊ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ». ΠΠ½ΡΡΡΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ ΠΊΠ°Π²ΡΡΠ΅ΠΊ, Π»ΡΠ±ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ', ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ». ΠΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ ("ΡΡΡΠΎΠ³ΠΈΠ΅, ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ") ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ ("Π½Π΅ΡΡΡΠΎΠ³ΠΈΠ΅, ΠΈΠ»ΠΈ Π½Π΅ΠΏΠΎΠ»Π½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ").
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π½ΡΡΡΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ ΠΊΠ°Π²ΡΡΠ΅ΠΊ Π΄Π°ΠΆΠ΅ ΡΠΊΡΠ°Π½ΠΈΡΡΡΡΠΈΠΉ (\) ΡΠΈΠΌΠ²ΠΎΠ» Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠ²Π΅ΡΡΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ ΠΊΠ°Π²ΡΡΠΊΡ Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ, Π½Π΅ Π΄Π°ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
echo "Why can't I write 's between single quotes"
echo
# ΠΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄.
echo 'Why can'\''t I write '"'"'s between single quotes'
# |-------| |----------| |-----------------------|
# Π’ΡΠΈ ΡΡΡΠΎΠΊΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ,
# ΠΈ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
# ΠΡΠΈΠΌΠ΅Ρ Π»ΡΠ±Π΅Π·Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ Stephane Chazelas.
ΠΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ -- ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°. ΠΠΊΡΠ°Π½ΠΈΡΡΡΡΠΈΠΉ (escape) ΡΠΈΠΌΠ²ΠΎΠ» (\) ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π° Π½ΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ».
Π‘ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈ ΡΡΠΈΠ»ΠΈΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ echo ΠΈ sed, ΡΠΊΡΠ°Π½ΠΈΡΡΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° - ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠΈ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.