popd
echo "ΠΠΎΠ·Π²ΡΠ°Ρ Π² ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ `pwd`."
exit 0
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
let
ΠΠΎΠΌΠ°Π½Π΄Π° let ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ expr.
ΠΡΠΈΠΌΠ΅Ρ 11-8. ΠΠΎΠΌΠ°Π½Π΄Π° let, Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
#!/bin/bash
echo
let a=11 # Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ 'a=11'
let a=a+5 # ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ "a = a + 5"
# (ΠΠ²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌ)
echo "11 + 5 = $a"
let "a <<= 3" # ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ let "a = a << 3"
echo "\"\$a\" (=16) ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ Π½Π° 3 ΡΠ°Π·ΡΡΠ΄Π° = $a"
let "a /= 4" # ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ let "a = a / 4"
echo "128 / 4 = $a"
let "a -= 5" # ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ let "a = a - 5"
echo "32 - 5 = $a"
let "a = a * 10" # ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ let "a = a * 10"
echo "27 * 10 = $a"
let "a %= 8" # ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ let "a = a % 8"
echo "270 mod 8 = $a (270 / 8 = 33, ΠΎΡΡΠ°ΡΠΎΠΊ = $a)"
echo
exit 0
eval
eval arg1 [arg2] ... [argN]
Π’ΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΈΠΌΠ΅Ρ 11-9. ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ eval
#!/bin/bash
y=`eval ls -l` # ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ y=`ls -l`
echo $y # Π½ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ .
echo
echo "$y" # ΠΡΠ»ΠΈ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ -- ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ.
echo; echo
y=`eval df` # ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ y=`df`
echo $y # Π½ΠΎ Π±Π΅Π· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ.
# ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² LF (ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ), ΡΠΎ Π°Π½Π°Π»ΠΈΠ·
#+ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ awk, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΠ΅.
exit 0
ΠΡΠΈΠΌΠ΅Ρ 11-10. ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π°Π½ΡΠ°
#!/bin/bash
y=`eval ps ax | sed -n '/ppp/p' | awk '{ print $1 }'`
# ΠΡΡΡΠ½ΠΈΡΡ PID ΠΏΡΠΎΡΠ΅ΡΡΠ° 'ppp'.
kill -9 $y # "ΠΡΠΈΡ Π»ΠΎΠΏΠ½ΡΡΡ" Π΅Π³ΠΎ
# ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ
# kill -9 `ps ax | awk '/ppp/ { print $1 }'
chmod 666 /dev/ttyS3
# ΠΠ°Π²Π΅ΡΡΠ΅Π½Π½ΡΠΉ, ΠΏΠΎ ΡΠΈΠ³Π½Π°Π»Ρ SIGKILL, ppp ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°
# ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΎΡΡΡ. ΠΠ΅ΡΠ½ΡΡΡ ΠΈΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
rm /var/lock/LCK..ttyS3 # Π£Π΄Π°Π»ΠΈΡΡ lock-ΡΠ°ΠΉΠ» ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°.
exit 0
ΠΡΠΈΠΌΠ΅Ρ 11-11. Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ "rot13"
#!/bin/bash
# Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ "rot13" Ρ ΠΏΠΎΠΌΠΎΡΡΡ 'eval'.
# Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ "rot13.sh".
setvar_rot_13() # ΠΡΠΈΠΏΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ "rot13"
{
local varname=$1 varvalue=$2
eval $varname='$(echo "$varvalue" | tr a-z n-za-m)'
}
setvar_rot_13 var "foobar" # ΠΡΠΎΠΏΡΡΡΠΈΡΡ ΡΠ»ΠΎΠ²ΠΎ "foobar" ΡΠ΅ΡΠ΅Π· rot13.
echo $var # sbbone
echo $var | tr a-z n-za-m # foobar
# Π Π°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π½ΠΈΠ΅.
# ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ» Stephane Chazelas.
exit 0
Rory Winston ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ eval.
ΠΡΠΈΠΌΠ΅Ρ 11-12. ΠΠ°ΠΌΠ΅Π½Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Perl, Ρ ΠΏΠΎΠΌΠΎΡΡΡ eval
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ "test.pl", Π½Π° ΡΠ·ΡΠΊΠ΅ Perl:
...
my $WEBROOT = <WEBROOT_PATH>;
...
ΠΡΠ° ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΌΠ΅ΡΡΠΎ Π΅Π΅ ΠΈΠΌΠ΅Π½ΠΈ:
$export WEBROOT_PATH=/usr/local/webroot
$sed 's/<WEBROOT_PATH>/$WEBROOT_PATH/' < test.pl > out
Π΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
my $WEBROOT = $WEBROOT_PATH;
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅:
$export WEBROOT_PATH=/usr/local/webroot
$eval sed 's/<WEBROOT_PATH>/$WEBROOT_PATH/' < test.pl > out
# ====
ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π°Π» ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ -- ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ,
Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
my $WEBROOT = /usr/local/webroot
ΠΠΎΠΌΠ°Π½Π΄Π° eval ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°. ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°, ΡΠΎ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΠ·Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ eval. Π’Π°ΠΊ, eval $COMMANDS ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΈΡΠ°Π½ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ COMMANDS, ΠΊΠΎΡΠΎΡΠ°Ρ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²Π΅ΡΡΠΌΠ° Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΡΡΡΠΏΡΠΈΠ·Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ rm -rf *. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ eval, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΡΠ°ΠΉΠ½Π΅ ΠΎΠΏΠ°ΡΠ½ΠΎ.
set
ΠΠΎΠΌΠ°Π½Π΄Π° set ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΉ (ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΠ»Π°Π³ΠΎΠ²), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ°. ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ -- ΡΠ±ΡΠΎΡ/ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²), Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (set `command`).
ΠΡΠΈΠΌΠ΅Ρ 11-13. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ set
#!/bin/bash
# script "set-test"
# ΠΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Ρ ΡΡΠ΅ΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ,
# Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: "./set-test one two three".
echo
echo "ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ set \`uname -a\` :"
echo "ΠΡΠ³ΡΠΌΠ΅Π½Ρ #1 = $1"
echo "ΠΡΠ³ΡΠΌΠ΅Π½Ρ #2 = $2"
echo "ΠΡΠ³ΡΠΌΠ΅Π½Ρ #3 = $3"
set `uname -a` # ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
# Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ Π±Π΅ΡΡΡΡΡ ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΡ `uname -a`
echo $_
echo "ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° set \`uname -a\` :"
# $1, $2, $3 ΠΈ Ρ.Π΄. Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ
#+ ΠΊΠΎΠΌΠ°Π½Π΄Ρ `uname -a`
echo "ΠΠΎΠ»Π΅ #1 'uname -a' = $1"
echo "ΠΠΎΠ»Π΅ #2 'uname -a' = $2"
echo "ΠΠΎΠ»Π΅ #3 'uname -a' = $3"
echo ---
echo $_ # ---
echo
exit 0
ΠΡΠ·ΠΎΠ² set Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.
bash$ set
AUTHORCOPY=/home/bozo/posts
BASH=/bin/bash
BASH_VERSION=$'2.05.8(1)-release'
...
XAUTHORITY=/home/bozo/.Xauthority
_=/etc/bashrc
variable22=abc
variable23=xzy
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° set ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ ΠΊΠ»ΡΡΠΎΠΌ "--", ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡΡ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ). ΠΡΠ»ΠΈ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ±ΡΠΎΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ 11-14. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²)
#!/bin/bash
variable="one two three four five"
set -- $variable
# ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π±Π΅ΡΡΡΡΡ ΠΈΠ· "$variable".
first_param=$1
second_param=$2
shift; shift # ΡΠ΄Π²ΠΈΠ³ Π΄Π²ΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
remaining_params="$*"
echo
echo "ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ = $first_param" # one
echo "Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ = $second_param" # two
echo "ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ = $remaining_params" # three four five
echo; echo
# Π‘Π½ΠΎΠ²Π°.
set -- $variable
first_param=$1
second_param=$2
echo "ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ = $first_param" # one
echo "Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ = $second_param" # two
# ======================================================
set --
# ΠΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
first_param=$1
second_param=$2
echo "ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ = $first_param" # (ΠΏΡΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅)
echo "Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ = $second_param" # (ΠΏΡΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅)
exit 0
Π‘ΠΌ. ΡΠ°ΠΊ ΠΆΠ΅ ΠΡΠΈΠΌΠ΅Ρ 10-2 ΠΈ ΠΡΠΈΠΌΠ΅Ρ 12-40.
unset
ΠΠΎΠΌΠ°Π½Π΄Π° unset ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ -- ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² null. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ).
bash$ unset PATH
bash$ echo $PATH
bash$
ΠΡΠΈΠΌΠ΅Ρ 11-15. "Π‘Π±ΡΠΎΡ" ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
#!/bin/bash
# unset.sh: Π‘Π±ΡΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
variable=hello # ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
echo "variable = $variable"
unset variable # Π‘Π±ΡΠΎΡ.
# Π’ΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ Π΄Π°Π΅Ρ variable=
echo "(unset) variable = $variable" # $variable = null.
exit 0
export
ΠΠΎΠΌΠ°Π½Π΄Π° export ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π΄Π΅Π»Π°Ρ Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ export ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π΄Π΅Π»Π°Ρ ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².