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

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8-4. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прСдставлСния числовых констант

#!/bin/bash

# numbers.sh: Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прСдставлСния числовых констант.


# ДСсятичноС: ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

let "dec = 32"

echo "дСсятичноС число = $dec" # 32

# Π’ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ.


# Π’ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅: числа Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с '0' (нуля)

let "oct = 032"

echo "Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число = $oct" # 26

# Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСчатаСтся Π² дСсятичном Π²ΠΈΠ΄Π΅.

# --------- ------ -- -------


# ШСстнадцатиричноС: числа Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с '0x' ΠΈΠ»ΠΈ '0X'

let "hex = 0x32"

echo "ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΠΎΠ΅ число = $hex" # 50

# Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСчатаСтся Π² дСсятичном Π²ΠΈΠ΄Π΅.


# Π”Ρ€ΡƒΠ³ΠΈΠ΅ основы счислСния: ΠžΠ‘ΠΠžΠ’Π#Π§Π˜Π‘Π›Πž

# ΠžΠ‘ΠΠžΠ’Π Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ 2 ΠΈ 64.

# для записи Π§Π˜Π‘Π›Π Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠžΠ‘ΠΠžΠ’Π• Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ символов,

# см. ниТС.


let "bin = 2#111100111001101"

echo "Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число = $bin" # 31181


let "b32 = 32#77"

echo "32-Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число = $b32" # 231


let "b64 = 64#@_"

echo "64-Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число = $b64" # 4094

#

# Нотация ΠžΠ‘ΠΠžΠ’Π#Π§Π˜Π‘Π›Πž ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ

#+ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ основ счислСния (ΠΎΡ‚ 2 Π΄ΠΎ 64)

# 10 Ρ†ΠΈΡ„Ρ€ + 26 символов Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС + 26 символов Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС + @ + _


echo


echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA))

# 1295 170 44822 3375


# Π’Π°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

# --------------

# ИспользованиС символов, для записи числа, выходящих Π·Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎ,

#+ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠžΠ‘ΠΠžΠ’Π• счислСния

#+ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ появлСнию сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ….


let "bad_oct = 081"

# numbers.sh: let: oct = 081: value too great for base (error token is "081")

# Для записи Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… чисСл допускаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

#+ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 0 - 7.


exit 0 # Бпасибо Rich Bartell ΠΈ Stephane Chazelas, Π·Π° Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ.

Π§Π°ΡΡ‚ΡŒ 3. Π£Π³Π»ΡƒΠ±Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»

Π“Π»Π°Π²Π° 9. К вопросу ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ сцСнариям Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΌΠΎΡ‰ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Π° для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ всС тонкости ΠΈ Π½ΡŽΠ°Π½ΡΡ‹.

9.1. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ВстроСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ $BASH

ΠΏΡƒΡ‚ΡŒ ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ Bash

bash$ echo $BASH

/bin/bash


$BASH_VERSINFO[n]

это массив, состоящий ΠΈΠ· 6 элСмСнтов, ΠΈ содСрТащий ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вСрсии Bash. ΠžΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $BASH_VERSION, ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΡƒΡŽ Π½ΠΈΠΆΠ΅.

# Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ вСрсии Bash:


for n in 0 1 2 3 4 5

do

echo "BASH_VERSINFO[$n] = ${BASH_VERSINFO[$n]}"

done


# BASH_VERSINFO[0] = 2 # Major version no.

# BASH_VERSINFO[1] = 05 # Minor version no.

# BASH_VERSINFO[2] = 8 # Patch level.

# BASH_VERSINFO[3] = 1 # Build version.

# BASH_VERSINFO[4] = release # Release status.

# BASH_VERSINFO[5] = i386-redhat-linux-gnu # Architecture

# (same as $MACHTYPE).


$BASH_VERSION

вСрсия Bash, установлСнного Π² систСмС

bash$ echo $BASH_VERSION

2.04.12(1)-release


tcsh% echo $BASH_VERSION

BASH_VERSION: Undefined variable.


ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $BASH_VERSION -- Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ исполняСтся скрипт. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $SHELL Π½Π΅ всСгда Π΄Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚.

$DIRSTACK

содСрТимоС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСтся ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ pushd ΠΈ popd)

Π­Ρ‚Π° пСрСмСнная соотвСтствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π΅ dirs, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ dirs ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ содСрТимоС всСго стСка ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

$EDITOR

Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ скриптом, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ vi ΠΈΠ»ΠΈ emacs.

$EUID

"эффСктивный" ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Effective User ID)

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΡ€Π°Π²Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ su.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $EUID Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с содСрТимым ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $UID.

$FUNCNAME

имя Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

xyz23 ()

{

echo "Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ΡΡ функция $FUNCNAME." # Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ΡΡ функция xyz23.

}


xyz23


echo "FUNCNAME = $FUNCNAME" # FUNCNAME =

# ΠŸΡƒΡΡ‚ΠΎΠ΅ (Null) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π΅ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.


$GLOBIGNORE

ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ подстановки ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² (globbing) .

$GROUPS

Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ

Π­Ρ‚ΠΎ список Π³Ρ€ΡƒΠΏΠΏ (массив) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Π³Ρ€ΡƒΠΏΠΏ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠ°ΠΊ эо записано Π² /etc/passwd.

root# echo $GROUPS

0


root# echo ${GROUPS[1]}

1


root# echo ${GROUPS[5]}

6


$HOME

домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ это /home/username (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-13)

$HOSTNAME

Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ имя хоста устанавливаСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ hostname Π²ΠΎ врСмя исполнСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… сцСнариСв Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы. ВнутрСнняя пСрСмСнная $HOSTNAME Bash ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ посрСдством Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gethostname(). Π‘ΠΌ. Ρ‚Π°ΠΊ ΠΆΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-13.

$HOSTTYPE

Ρ‚ΠΈΠΏ ΠΌΠ°ΡˆΠΈΠ½Ρ‹

Подобно $MACHTYPE, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.

bash$ echo $HOSTTYPE

i686

$IFS

Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎΠ»Π΅ΠΉ Π²ΠΎ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ строкС (IFS -- Input Field Separator)

По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ -- ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ (ΠΏΡ€ΠΎΠ±Π΅Π», табуляция ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки), Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ€Π°Π·Π±ΠΎΡ€Π° строк, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ поля Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ запятыми. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΏΡ€ΠΈ составлСнии содСрТимого ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $*, Bash ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ ΠΈΠ· $IFS для раздСлСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5-1.

bash$ echo $IFS | cat -vte

$


bash$ bash -c 'set w x y z; IFS=":-;"; echo "$*"'

w:x:y:z


ΠŸΡ€ΠΈ всСм ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании $IFS ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ нСсколько ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-1. $IFS ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы

#!/bin/bash

# ΠŸΡ€ΠΈ использовании $IFS, ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.


output_args_one_per_line()

{

for arg

do echo "[$arg]"

done

}


echo; echo "IFS=\" \""

echo "-------"


IFS=" "

var=" a b c "

output_args_one_per_line $var # output_args_one_per_line `echo " a b c "`

#

# [a]

# [b]

# [c]


echo; echo "IFS=:"

echo "-----"


IFS=:

var=":a::b:c:::" # Π’ΠΎ ΠΆΠ΅ самоС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π·ΠΌΠ΅Π½Π΅Π½Ρ‹ символом ":".

output_args_one_per_line $var

#

# []

# [a]

# []

# [b]

# [c]

# []

# []

# []


# Π’ΠΎ ΠΆΠ΅ самоС происходит ΠΈ с Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΏΠΎΠ»Π΅ΠΉ "FS" Π² awk.


# Бпасибо Stephane Chazelas.


echo


exit 0


(Бпасибо S. C., Π·Π° Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.)

$LC_COLLATE

Π§Π°Ρ‰Π΅ всСго устанавливаСтся Π² .bashrc ΠΈΠ»ΠΈ /etc/profile, эта пСрСмСнная Π·Π°Π΄Π°Π΅Ρ‚ порядок сортировки символов, Π² опСрациях подстановки ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π² поискС ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. ΠŸΡ€ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΉ настройкС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ LC_COLLATE ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ вСсьма Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Начиная с вСрсии 2.05, Bash, Π² опСрациях подстановки ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ символами Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистров, Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ… символов Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. НапримСр,, ls [A-M]* Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠ°ΠΊ File1.txt, Ρ‚Π°ΠΊ ΠΈ file1.txt. Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ общСпринятому стандарту повСдСния шаблонов Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках выполняСтся установкой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ LC_COLLATE Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ C ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ export LC_COLLATE=C Π² Ρ„Π°ΠΉΠ»Π΅ /etc/profile ΠΈ/ΠΈΠ»ΠΈ ~/.bashrc.

$LC_CTYPE

Π­Ρ‚Π° внутрСнняя пСрСмСнная опрСдСляСт ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ символов. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² опСрациях подстановки ΠΈ поискС ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

$LINENO

НомСр строки исполняСмого сцСнария. Π­Ρ‚Π° пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ исполняСмого сцСнария ΠΈ Ρ‡Π°Ρ‰Π΅ всСго примСняСтся Π² ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… цСлях.