ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π΅ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ShellCheck 0.9, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π½Π° shell, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° bash, sh, ksh ΠΈ dash. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Haskell ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· GPLv3. ΠΡΠΈΠ³ΡΡΠ΅Π½ΠΈ ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Ρ Vim, Emacs, VSCode, Sublime, Atom ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΌΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ GCC-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ ΠΊΠ°ΠΊΡΠΎ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΈΡΠΎ Π²ΠΎΠ΄ΡΡ Π΄ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠ°ΠΊΠ° ΠΈ Π½Π° ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΊΡΡΠ²Π°, Π½ΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°. ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ ΡΡΡΠΎ Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΡΠ΅ΡΠ½ΠΈ ΠΌΠ΅ΡΡΠ°, Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ΠΊΠ»ΠΎΠΏΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ ΠΎΡΠΊΠ°Π·ΠΈ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΠ²Π°.
Π‘ΡΠ΅Π΄ ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅ ΠΎΡΠΊΡΠΈΡΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΈΠ·Π±ΡΠ³Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΈ ΡΠ°ΠΌΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈΠΌ Π² ΠΊΠ°Π²ΠΈΡΠΊΠΈ, Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΡΠ»ΠΎΠ²Π½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π΄Π°ΡΠΈ ΠΈ ΡΠΈΠΏΠΈΡΠ½ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ Π·Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ ΠΏΡΠΈ ΡΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½Π° β[[ $foo==0 ]]β, Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ βvar = 42β ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° $ ΠΏΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° β$foo=42β, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π±Π΅Π· ΠΊΠ°Π²ΠΈΡΠΊΠΈ βecho $1β, ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡΡΠ° Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΈ ΡΠΊΠΎΠ±ΠΈ Π² "tr -cd '[a-zA-Z0-9]'",
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΈΠ»Π° Π½Π° ΠΊΠΎΠ΄Π°, Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡΠ° ΠΈ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ βecho $[1+2]β ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ β$((..))β, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ° βrm -rf β$STEAMROOT/β*' ΡΠ΅ Π±ΡΠ΄Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ ΠΎΠΏΠ°ΡΠ½Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΡΡΠΈΠ΅ Π³Π»Π°Π²Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π΅ Π΅ ΠΏΠΎΠΏΡΠ»Π½Π΅Π½Π° $STEAMROOT, ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° "echo {1..10}" ΡΠ΅ Π±ΡΠ΄Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΡΠΎ Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ dash ΠΈ sh.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΠΈΠ·ΡΠ°Π·ΠΈ ΠΊΠ°ΡΠΎ βlocal readonly fooβ.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ βΠ΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π΅ Π½Π° x=1 y=$xβ.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π°ΠΊΠΎ $? ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° ΠΎΡΠΏΠ΅ΡΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° echo, printf, [ ], [[ ]] ΠΈ test.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ° Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ((..))inarray[((idx))]=val.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π΄Π²ΠΎΠΉΠ½ΠΈ ΡΠΊΠΎΠ±ΠΈ Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ° Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΠ±ΠΈΡΠ΅ Π² ΠΈΠ·ΡΠ°Π·Π° a[(x+1)]=val.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru