Iepazīstinām ar ABS, čaulas skriptu programmēšanas valodu

Pēdējo dienu laikā es pavadīju kādu laiku, lai strādātu pie projekta, kas man bija domāts vecumam, kas ir scenāriju alternatīva Bash: ļaujiet man jūs iepazīstināt ar ABS programmēšanas valodu.

Kāpēc

Ļaujiet man īsi pateikt: mēs visi mīlam čaumalu programmēšanu - atkārtotu uzdevumu automatizēšanu bez pārāk lielas piepūles.

Mēs, iespējams, piekritīsim, ka apvalka programmēšana sintakses ziņā ir arī sava veida rieksti:

if [ -z $STRING ]; then ...fi

Kā, ehm, kas pie velna? fi? -z? iekavas?

Cīņa ar Bashu vai kopējo čaulas programmēšanas valodu laiku pa laikam var kļūt intensīva. Rakstīšanas kods, piemēram:

if (this == that) { parts = this.split("/").filter(...).map(...)}

radīs asaras acīs, ja izmantojat čaulu.

Tagad jūs varat darīt līdzīgas lietas ar jebkuru galveno programmēšanas valodu (iepriekš minētais piemērs ir derīgs JavasScript): tas, kas šīm valodām nav lielisks, ir to integrācija ar pamatā esošo sistēmu - čaula no šī viedokļa vienkārši ir daudz sakritīgāka / spēcīgāka.

Iedomājieties, ka jūs varētu palaist kodu, piemēram:

host = $(hostname)
if (host == "johns_computer") { ...}

Nu, jums vairs nav “jāiedomājas”: ABS ir valoda, kas apvieno ātras un vienkāršas sistēmas komandas ar elegantāku sintaksi.

Padomājiet par to kā par labāko kopš konfektēm, tikai atcerieties, ka šāda ir ABS autora definīcija. Bet ja nopietni, tas ir diezgan ērti.

Netici man? Turpini lasīt!

Piemēri

Esmu pārliecināts par “ parādiet kodu! ”Mantra, tāpēc ātri tiksim pie tās. Palaist komandas ar ABS ir ļoti viegli:

# Get the content of your hostfile$(cat /etc/hosts)

arī caurules darbojas:

# Check if a domain is in your hostfile$(cat /etc/hosts | grep domain.com | wc -l)

Šajā brīdī mēs varam vienkārši uztvert komandas un skripta iznākumu:

# Check if a domain is in your hostfilematches = $(cat /etc/hosts | grep domain.com | wc -l)
# If so, print an awesome stringif matches.int() > 0 { echo("We got ya!")}

Tas nenotiks, bet pieņemsim, ka notiek kļūda :

# Check if a domain is in your hostfilematches = $(cat /etc/hosts | grep domain.com | wc -l)
if !matches.ok { echo("How do you even...")}
# If so, print an awesome stringif matches.int() > 0 { echo("We got ya!")}

Mēs to varētu padarīt mazliet vispārīgāku:

$ cat script.abs# Usage $ abs script.abs domain.com# Check if a domain is in your hostfiledomain = arg(2)matches = $(cat /etc/hosts | grep $domain | wc -l)
if !matches.ok { echo("How do you even...")}
# If so, print an awesome stringif matches.int() > 0 { echo("We got %s!", domain)}

Tagad stīgas ir diezgan garlaicīgas, tāpēc mēs varam izmēģināt kaut ko jautrāku:

# Say we're getting some JSON from a commandx = $(echo '{"some": {"dope": "json"}}')x.json().some.dope # "json"
# Arrays, you say?tz = $(cat /etc/timezone) # "Asia/Dubai"parts = tz.split("/") # ["Asia", "Dubai"]
# You better destructure the hell out of that![continent, city] = tz.split("/")

…un tā tālāk. Ir daudz „parastu” lietu, ko jūs varat darīt ar ABS, tāpēc es tām īpaši nepievērsīšos - ļaujiet man jums parādīt dīvainākās daļas:

# Avoiding the bug that happened because# we forgot to compare strings case-insensitively"HELLO" ~ "hello" # true
# Just range1..3 # [1, 2, 3]
# Combined comparison operator (thanks Ruby!)5  5 # 05  6 # -16  5 # 1
# Classic short-circuiting1 && 2 # 21 || 2 # 1

15 minūšu laikā jūs varat pārlūkot visu dokumentāciju: ABS mērķis nav būt vispārējas nozīmes, ar funkcijām ielādēta valoda, tāpēc virsma nav tik plaša. Turklāt, ja esat strādājis ar tādām valodām kā JavaScript, Python vai Ruby, jums nebūs problēmu pierast pie ABS.

Kas tagad notiks?

Jūs varat doties uz ABS vietni un uzzināt vairāk par valodu. Drosmīgākie tā vietā veiks ceļojumu uz ABS github repo un lejupielādēs laidienu, lai to instalētu lokāli.

Drosmīgākie vienkārši:

bash <(curl //www.abs-lang.org/installer.sh)

(jums var būt nepieciešams sudo tieši pirms tam)

Kurš tu būsi?

Sākotnēji publicēts vietnē odino.org (2018. gada 25. decembrī).

Jūs varat sekot man Twitter - laipni aicināti! ?