🐧 ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ eval Π½Π° Linux

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ eval Π² Linux

by itisgood

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ Π² Linux, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ, Π½ΠΎ Ρ‡Ρ‚ΠΎ, Ссли я скаТу Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅?

Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚-Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ идСя ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ eval, которая позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄, хранящихся Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² этом руководствС ΠΌΡ‹ расскаТСм Π²Π°ΠΌ ΠΎ многочислСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ eval Π² Linux.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ eval Π² Linux

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ eval ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, всСгда ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ с синтаксиса.

Π˜Ρ‚Π°ΠΊ, Π²ΠΎΡ‚ синтаксис использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ eval

eval [argument]

Π—Π΄Π΅ΡΡŒ, Π² ΠΏΠΎΠ»Π΅ [argument], Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ назначаСтся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄.

ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π²Ρ‹ добавляСтС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая содСрТит нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ eval.

1. ΠžΡ†Π΅Π½ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ созданиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

variable_name="chain of commands"

НапримСр, здСсь я создал ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ sagar, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ тСкст привСтствия для вошСдшСго Π² систСму ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

sagar="echo 'Hello $USER'"

ПослС этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ eval ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, хранящиСся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

eval $<variable_name>

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Π½Π°Π·Π²Π°Π» свою ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ sagar, я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

eval $sagar

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π₯отя для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ достаточно, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ контроля Π½Π°Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.

Π’ этом случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

eval $command_1 $command_2

Но Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ echo ΠΈΠ»ΠΈ print, Ρ‚ΠΎ Π²Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ Π½Π΅Π΅:

eval "echo $command_1 $command_2"

Для справки, здСсь я использовал Π΄Π²Π΅ строки Π² $command_1 ΠΈ $command_2, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ здСсь, Π° Π·Π°Ρ‚Π΅ΠΌ использовал ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ echo с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ eval:

3. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

Для выполнСния матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ синтаксис ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚ΠΎΡ‚, Ρ‡Ρ‚ΠΎ я объяснял для использования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎ с нСбольшим ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ΠΌ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ var1 ΠΈ var2 с числовыми значСниями, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡ… ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ (Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слоТСниС).

Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ((…)).

Π—Π²ΡƒΡ‡ΠΈΡ‚ слоТно? Π”Π°Π²Π°ΠΉΡ‚Π΅ я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π― Ρ…ΠΎΡ‡Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слоТСниС ΠΌΠ΅ΠΆΠ΄Ρƒ var1 ΠΈ var2, поэтому ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… чисСл:

var1=10
var2=5

ПослС этого Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ тСкст:

result="Your total is"

НаконСц, собСритС всС вмСстС, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ здСсь:

eval 'echo $result' $(($var1+var2))

см. Ρ‚Π°ΠΊΠΆΠ΅:

You may also like

Leave a Comment