ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ $* ΠΈ [email protected], Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ! ΠΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $IFS.
ΠΡΠΈΠΌΠ΅Ρ 9-7. ΠΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $* ΠΈ [email protected]
#!/bin/bash
# ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΠΎΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ "$*" ΠΈ " [email protected]",
#+ ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΠΊΠ°Π²ΡΡΠΊΠΈ.
# ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΠΎΡΡΠΈ, ΠΏΡΠΎΡΠ²Π»ΡΡΡΠ΅ΠΉΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ
#+ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ IFS.
set -- "ΠΠ΅ΡΠ²ΡΠΉ ΠΎΠ΄ΠΈΠ½" "Π²ΡΠΎΡΠΎΠΉ" "ΡΡΠ΅ΡΠΈΠΉ:ΠΎΠ΄ΠΈΠ½" "" "ΠΡΡΡΠΉ: :ΠΎΠ΄ΠΈΠ½"
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² $1, $2, ΠΈ Ρ.Π΄.
echo
echo 'IFS ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "$*"'
c=0
for i in "$*" # Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ
do echo "$((c+=1)): [$i]" # ΠΡΠ° ΡΡΡΠΎΠΊΠ° ΠΎΡΡΠ°Π΅ΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΈΠΊΠ»Π°Ρ .
# ΠΡΠ²ΠΎΠ΄ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
done
echo ---
echo 'IFS ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $*'
c=0
for i in $* # Π±Π΅Π· ΠΊΠ°Π²ΡΡΠ΅ΠΊ
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ " [email protected]"'
c=0
for i in " [email protected]"
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ [email protected]'
c=0
for i in [email protected]
do echo "$((c+=1)): [$i]"
done
echo ---
IFS=:
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "$*"'
c=0
for i in "$*"
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $*'
c=0
for i in $*
do echo "$((c+=1)): [$i]"
done
echo ---
var=$*
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "$var" (var=$*)'
c=0
for i in "$var"
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $var (var=$*)'
c=0
for i in $var
do echo "$((c+=1)): [$i]"
done
echo ---
var="$*"
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $var (var="$*")'
c=0
for i in $var
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "$var" (var="$*")'
c=0
for i in "$var"
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ " [email protected]"'
c=0
for i in " [email protected]"
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ [email protected]'
c=0
for i in [email protected]
do echo "$((c+=1)): [$i]"
done
echo ---
[email protected]
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $var ( [email protected])'
c=0
for i in $var
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "$var" ( [email protected])'
c=0
for i in "$var"
do echo "$((c+=1)): [$i]"
done
echo ---
var=" [email protected]"
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "$var" (var=" [email protected]")'
c=0
for i in "$var"
do echo "$((c+=1)): [$i]"
done
echo ---
echo 'IFS=":", ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $var (var=" [email protected]")'
c=0
for i in $var
do echo "$((c+=1)): [$i]"
done
echo
# ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΏΠΎΠ΄ ksh ΠΈΠ»ΠΈ zsh -y.
exit 0
# ΠΡΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ Stephane Chazelas,
# ΠΠ΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ΅Π½Ρ Π°Π²ΡΠΎΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
Π Π°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ [email protected] ΠΈ $* Π½Π°Π±Π»ΡΠ΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 9-8. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ $* ΠΈ [email protected], ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $IFS -- ΠΏΡΡΡΠ°
#!/bin/bash
# ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $IFS ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° "ΠΏΡΡΡΡΠΌ" Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ,
# ΡΠΎ "$*" ΠΈ " [email protected]" ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π΅ Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ.
mecho () # ΠΡΠ²ΠΎΠ΄ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
{
echo "$1,$2,$3";
}
IFS="" # ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ "ΠΏΡΡΡΡΠΌ" Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
set a b c # Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
mecho "$*" # abc,,
mecho $* # a,b,c
mecho [email protected] # a,b,c
mecho " [email protected]" # a,b,c
# ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $* ΠΈ [email protected], ΠΏΡΠΈ "ΠΏΡΡΡΠΎΠΉ" $IFS, Π·Π°Π²ΠΈΡΠΈΡ
# ΠΎΡ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, Bash ΠΈΠ»ΠΈ sh.
# ΠΠΎΡΡΠΎΠΌΡ, Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΡΠ°Π·ΡΠΌΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΎΠΉ "ΡΠΈΡΠ΅ΠΉ" Π² ΡΠ²ΠΎΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ .
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ S.C.
exit 0
ΠΡΠΎΡΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
$-
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ»Π°Π³ΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ (ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ set). Π‘ΠΌ. ΠΡΠΈΠΌΠ΅Ρ 11-13.
ΠΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»Π° Π²Π²Π΅Π΄Π΅Π½Π° Π² ksh, ΠΎΡΠΊΡΠ΄Π° ΠΏΠ΅ΡΠ΅ΠΊΠΎΡΠ΅Π²Π°Π»Π° Π² Bash ΠΈ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Bash Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ -- ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° - Π·Π°ΠΏΡΡΠ΅Π½ Π»ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
$!
PID ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΎΠ½Π΅, ΠΏΡΠΎΡΠ΅ΡΡΠ°
LOG=$0.log
COMMAND1="sleep 100"
echo "ΠΠ°ΠΏΠΈΡΡ Π² Π»ΠΎΠ³ Π²ΡΠ΅Ρ PID ΡΠΎΠ½ΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΈΠ· ΡΡΠ΅Π½Π°ΡΠΈΡ: $0" >> "$LOG"
# Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
echo >> "$LOG"
# ΠΠΎΠΌΠ°Π½Π΄Ρ Π·Π°ΠΏΠΈΡΠΈ Π² Π»ΠΎΠ³.
echo -n "PID of \"$COMMAND1\": " >> "$LOG"
${COMMAND1} &
echo $! >> "$LOG"
# PID ΠΏΡΠΎΡΠ΅ΡΡΠ° "sleep 100": 1506
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Jacques Lederer Π·Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
$_
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΈΠΌΠ΅Ρ 9-9. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅"
#!/bin/bash
echo $_ # /bin/bash
# ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠ΅Π½Π°ΡΠΈΡ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ /bin/bash.
du >/dev/null # ΠΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π°.
echo $_ # du
ls -al >/dev/null # ΠΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π°.
echo $_ # -al (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ)
:
echo $_ # :
$?
ΠΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΠ° (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ 22-3)
$$
PID ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°-ΡΡΠ΅Π½Π°ΡΠΈΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $$ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ "ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ " ΠΈΠΌΠ΅Π½ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ A-14, ΠΡΠΈΠΌΠ΅Ρ 29-6, ΠΡΠΈΠΌΠ΅Ρ 12-23 ΠΈ ΠΡΠΈΠΌΠ΅Ρ 11-23). ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ² mktemp.
9.2. Π Π°Π±ΠΎΡΠ° ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ
Bash ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» Bash ΠΈΡΠΏΡΡΡΠ²Π°Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ΄Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π° Π΄ΡΡΠ³ΠΈΠ΅ -- ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ UNIX -- expr. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡΠΌ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅ΠΉ ΠΏΡΡΠ°Π½ΠΈΡΠ΅.
ΠΠ»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ
${#string}
expr length $string
expr "$string" : '.*'
stringZ=abcABC123ABCabc
echo ${#stringZ} # 15
echo `expr length $stringZ` # 15
echo `expr "$stringZ" : '.*'` # 15
ΠΡΠΈΠΌΠ΅Ρ 9-10. ΠΡΡΠ°Π²ΠΊΠ° ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ°ΠΌΠΈ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅
#!/bin/bash
# paragraph-space.sh
# ΠΡΡΠ°Π²ΠΊΠ° ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ°ΠΌΠΈ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
# ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: $0 <FILENAME
MINLEN=45 # ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
# Π‘ΡΡΠΎΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΌΠ΅Π½ΡΡΠ΅Π΅, ΡΠ΅ΠΌ $MINLEN
#+ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ°.
while read line # ΠΠΎΡΡΡΠΎΡΠ½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΎΡ Π½Π°ΡΠ°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°...
do
echo "$line" # ΠΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ.
len=${#line}
if [ "$len" -lt "$MINLEN" ]
then echo # ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ°.
fi
done
exit 0
ΠΠ»ΠΈΠ½Π° ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ Π² ΡΡΡΠΎΠΊΠ΅ (ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²Π΅Π΄Π΅ΡΡΡ Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ)
expr match "$string" '$substring'
Π³Π΄Π΅ $substring -- ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
expr "$string" : '$substring'
Π³Π΄Π΅ $substring -- ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
stringZ=abcABC123ABCabc
# |------|
echo `expr match "$stringZ" 'abc[A-Z]*.2'` # 8
echo `expr "$stringZ" : 'abc[A-Z]*.2'` # 8
Index
expr index $string $substring
ΠΠΎΠΌΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π² $string c ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π² $substring.
stringZ=abcABC123ABCabc
echo `expr index "$stringZ" C12` # 6
# ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° C.