Programmeerimise õppimine: Mis vahe on [ja [[Bashis?


Vastus 1:

Ma luban teile paar saladust. Esimene bash on tuletisteos. Selle põhifunktsioonid on inspireeritud Stephen Bourne'i loodud Bourne'i kestast. „Bourne again shell” (bash) algne eesmärk oli ühilduva funktsioonide komplekti ja süntaksi uuesti rakendamine FSF GNU vaba tarkvarana. Ka [või testkäsk polnud algse Bourne'i kesta sisseehitatud funktsioon. Välise / bin / testkäskluse GNU ekvivalent ja selle [link on endiselt installitud Linuxi osana GNU südamikust

Moodsates versioonides bash on sisse ehitatud testkäsk ja selle [varjunimi]. KÕIGE jäljendavad välise käsu semantikat. Nagu iga sisseehitatud käsuga bash, saate selle keelata ja lubada vastavalt vajadusele või isegi kapriisil.

Siin [[tuleb sisse. See on täiustatud sisseehitatud testkäsk (süntaks). Lisateavet saate lugeda meeslehtedelt, kuid need on mõnevõrra peened.

Näiteks tean, et [[toetab regulaaravaldiste sobitamist. Ma ei mäleta, millal see lisati, võib-olla juba bash4. Ma ei usu, et sisseehitatud test ega ka väline versioon seda võrdlust toetaksid (peate käskluse asendamisel kasutama grepi ja kontrollima näiteks seda, mis filtrist läbi sai).

Võtme äravõtmine: paljudel bash-pöördumistel ja -funktsioonidel on mõte vaid siis, kui neid vaadatakse ajaloolises kontekstis selle kohta, kuidas bashi kirjutati ja täiustati pikka aega. Algne Bourne'i kest kirjutati peaaegu viiskümmend aastat tagasi.


Vastus 2:

Praktikas pole bashi tingimuslausetes kodeerimise [] (üksikud sulud) ja [[]] (topelt sulud) vahel suurt erinevust. (Massiiviviidetes saab muidugi kasutada ainult üksikuid sulgusid.)

Kestade ajalugu seisneb selles, et vanal C kestal oli üksikkonsooli seadistus, seega toetavad hilisemad arenenud kestad selle ühilduvust. (Kui soovite tõesti vana kooli minna, kasutage testi ... aga häda!) Uus topeltklambri seadistus võimaldas teatud täiustuste hõlpsat kasutuselevõttu. Üks märkuse täiustus on see, et ümbersuunamisoperaatoritest () pole enam vaja põgeneda.

Tehniliselt on [ja] kestad, kui [[ja]] on märksõnad. Selle üks tagajärg on see, et iga kest toetab kindlasti [(see on POSIX-iga ühilduv). Ka testid, mida toetab [[võivad keskkonniti erineda.

BTW, konkreetse tehnilise olemusega programmeerimisküsimusi käsitletakse StackExchange saidil sageli hästi. Selles osas võite vaadata nõu. Mis vahe on kahekordse ja ühe nurksulgu vahel bashis ?.