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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 106

Автор Шоттс Уильям

${!прСфикс*}

${!прСфикс@}

Π­Ρ‚ΠΈ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ подстановки Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ прСфикса. Богласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ bash, ΠΎΠ±Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ с BASH:

[[email protected] ~]$ echo ${!BASH*}

BASH BASH_ARGC BASH_ARGV BASH_COMMAND BASH_COMPLETION BASH_COMPLETION_DIR BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со строками

БущСствуСт мноТСство Ρ„ΠΎΡ€ΠΌ подстановки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками. МногиС ΠΈΠ· Π½ΠΈΡ… особСнно Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с путями. Π€ΠΎΡ€ΠΌΠ°

${#ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€}

Π²Π΅Ρ€Π½Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ строки, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽΡΡ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€ΠΎΠ»ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΠ³Ρ€Π°Π΅Ρ‚ строка, Π½ΠΎ Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ @ ΠΈΠ»ΠΈ *, Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ подстановки Π²Π΅Ρ€Π½Π΅Ρ‚ число ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

[[email protected] ~]$ foo="This string is long."

[[email protected] ~]$ echo "'$foo' is ${#foo} characters long."

'This string is long.' is 20 characters long.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° подстановки:

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€:смСщСниС}

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€:смСщСниС:Π΄Π»ΠΈΠ½Π°}

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для извлСчСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° строки, содСрТащСйся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ начинаСтся с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ смСщСния ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° строки ΠΈ продолТаСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° Π΄Π»ΠΈΠ½Π°.

[[email protected] ~]$ foo="This string is long."

[[email protected] ~]$ echo ${foo:5}

string is long.

[[email protected] ~]$ echo ${foo:5:6}

string

Если ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ смСщСниС, Π΅Π³ΠΎ отсчСт начнСтся с ΠΊΠΎΠ½Ρ†Π° строки вмСсто Π½Π°Ρ‡Π°Π»Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ с Ρ„ΠΎΡ€ΠΌΠΎΠΉ ${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€:-слово}. Π”Π»ΠΈΠ½Π°, Ссли ΡƒΠΊΠ°Π·Π°Π½Π°, Π² этом случаС Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ мСньшС 0. Если Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ @, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ подстановки Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π»ΠΈΠ½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², начиная с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ смСщСния.

[[email protected] ~]$ foo="This string is long."

[[email protected] ~]$ echo ${foo: -5}

long.

[[email protected] ~]$ echo ${foo: -5:2}

lo

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹:

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€#шаблон}

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€##шаблон}

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, удаляя ΠΈΠ· Π½Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ шаблоном. Π’ шаблонС допускаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Π΅ символы: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² подстановкС ΠΏΡƒΡ‚Π΅ΠΉ. Π­Ρ‚ΠΈ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ° # удаляСт ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π΅ совпадСниС, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ° ## удаляСт самоС Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ совпадСниС.

[[email protected] ~]$ foo=file.txt.zip

[[email protected] ~]$ echo ${foo#*.}

txt.zip

[[email protected] ~]$ echo ${foo##*.}

zip

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹:

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€%шаблон}

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€%%шаблон}

Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ # ΠΈ ##, прСдставлСнныС Π²Ρ‹ΡˆΠ΅, Π½ΠΎ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ тСкст с ΠΊΠΎΠ½Ρ†Π° строки, содСрТащСйся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅.

[[email protected] ~]$ foo=file.txt.zip

[[email protected] ~]$ echo ${foo%.*}

file.txt

[[email protected] ~]$ echo ${foo%%.*}

file

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹:

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€/шаблон/строка}

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€//шаблон/строка}

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€/#шаблон/строка}

${ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€/%шаблон/строка}

Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ поиск с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Π² содСрТимом ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Если Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ совпадСниС с шаблоном, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Π΅ символы, это совпадСниС Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ содСрТимым ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ строки. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ совпадСниС с шаблоном. Π€ΠΎΡ€ΠΌΠ° // Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ совпадСния. Π€ΠΎΡ€ΠΌΠ° /# выполняСт Π·Π°ΠΌΠ΅Π½Ρƒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли совпадСниС с шаблоном Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π² самом Π½Π°Ρ‡Π°Π»Π΅ строки, Π° Ρ„ΠΎΡ€ΠΌΠ° /% выполняСт Π·Π°ΠΌΠ΅Π½Ρƒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли совпадСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ строки. Π§Π°ΡΡ‚ΡŒ /строка ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° совпавший Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½.

[[email protected] ~]$ foo=JPG.JPG

[[email protected] ~]$ echo ${foo/JPG/jpg}

jpg.JPG

[[email protected] ~]$ echo ${foo//JPG/jpg}

jpg.jpg

[[email protected] ~]$ echo ${foo/#JPG/jpg}

jpg.JPG

[[email protected] ~]$ echo ${foo/%JPG/jpg}

JPG.jpg

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ подстановки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” Ρ†Π΅Π½Π½Ρ‹ΠΉ инструмСнт. Π•Π³ΠΎ возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ sed ΠΈ cut. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° подстановки способствуСт ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сцСнария Π·Π° счСт отсутствия нСобходимости Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ внСшниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ longest-word ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Ρ‹, задСйствовав подстановку ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ${#j} Π²Π·Π°ΠΌΠ΅Π½ подстановки ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ $(echo $j | wc -c), которая ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ выполняСтся Π² ΠΏΠΎΠ΄Β­ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅:

#!/bin/bash

# longest-word3 : поиск самой Π΄Π»ΠΈΠ½Π½ΠΎΠΉ строки Π² Ρ„Π°ΠΉΠ»Π΅

for i; do

Β Β Β Β Β Β Β Β if [[ -r $i ]]; then

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_word=

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_len=

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β for j in $(strings $i); do

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β len=${#j}

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β if (( len > max_len )); then

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_len=$len

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_word=$j

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β fi

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β done

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β echo "$i: '$max_word' ($max_len characters)"

Β Β Β Β Β Β Β Β fi

Β Β Β Β Β Β Β Β shift

done

Π”Π°Π»Π΅Π΅, сравним ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π΄Π²ΡƒΡ… вСрсий с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ time:

[[email protected] ~]$ time longest-word2 dirlist-usr-bin.txt

dirlist-usr-bin.txt: 'scrollkeeper-get-extended-content-list' (38 characters)

real 0m3.618s

user 0m1.544s

sys 0m1.768s

[[email protected] ~]$ time longest-word3 dirlist-usr-bin.txt

dirlist-usr-bin.txt: 'scrollkeeper-get-extended-content-list' (38 characters)

real 0m0.060s

user 0m0.056s

sys 0m0.008s

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ 3,618 сСкунды, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкстовый Ρ„Π°ΠΉΠ», Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠΉ вСрсии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ подстановки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², понадобилось всСго 0,06 сСкунды β€” вСсьма сущСствСнноС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅.

ВычислСниС ΠΈ подстановка арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π’ Π³Π»Π°Π²Π΅ 7 ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ подстановки Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния Ρ€Π°Π·Π½Ρ‹Ρ… арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. НиТС приводится Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис

$((Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅))

Π³Π΄Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€” это любоС допустимоС арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Он тСсно связан с составной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ (( )), использовавшСйся Π² Π³Π»Π°Π²Π΅ 27 для вычислСния арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (ΠΎΡ†Π΅Π½ΠΊΠΈ истинности).

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ… ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ выраТСния ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π° здСсь рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΈΡ… список.

ОснованиС систСмы счислСния

Π’ Π³Π»Π°Π²Π΅ 9 ΠΌΡ‹ познакомились с Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌΠΈ (Π² систСмС счислСния с основаниСм 8) ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌΠΈ (Π² систСмС счислСния с основаниСм 16) числами. Π’ арифмСтичСских выраТСниях командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ цСлочислСнныС константы Π² систСмах счислСния с Π»ΡŽΠ±Ρ‹ΠΌ основаниСм. Π’ Ρ‚Π°Π±Π». 34.1 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹ записи чисСл с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ основания систСмы счислСния.

Π’Π°Π±Π»ΠΈΡ†Π° 34.1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ основания систСмы счислСния

Π€ΠΎΡ€ΠΌΠ° записи

ОписаниС

Число

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ числа Π±Π΅Π· упоминания систСмы счислСния ΠΈΠ½Ρ‚Π΅Ρ€Β­ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ дСсятичныС числа (Π² систСмС счислСния с основаниСм 10)

0число

Π’ арифмСтичСских выраТСниях числа, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с нуля, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ (Π² систСмС счислСния с основаниСм 8)

0xчисло

Π€ΠΎΡ€ΠΌΠ° записи ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… чисСл

основаниС#число

Число Π² систСмС счислСния с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ основаниСм

НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

[[email protected] ~]$ echo $((0xff))

255