$ () Un $ {} paplašinājumu izmantošana Shell skriptā

How Use Expansions Shell Script



Ja izmantojat Linux sistēmu, jūs, iespējams, jau zināt, cik būtiska ir čaulas saskarne mijiedarbībai ar jūsu sistēmu. Lielākajā daļā Linux izplatījumu Bash ir noklusējuma apvalks, ko mēs izmantojam, lai palaistu komandas un izpildītu skriptus. Korpusa skripts ir komandu kopums, kas, izpildot, tiek izmantots, lai Linux veiktu dažas noderīgas funkcijas. Šis lietotāja rakstītais .sh fails satur visas komandas, kas tiek izmantotas uzdevuma izpildei, lai mums šīs komandas nebūtu jāpalaiž manuāli, pa vienai.

Šajā apmācībā mēs izskaidrosim divus visnoderīgākos bash paplašinājumus, ko izmanto čaulas skriptos:







  • $ () - komandu aizstāšana
  • $ {} - parametru aizvietošana/mainīgā paplašināšana

Pēc skripta sadalīšanas žetonos tiek veikta Shell paplašināšana. Žetons ir rakstzīmju secība, ko apvalks uzskata par vienu vienību. Tas var būt gan vārds, gan operators.



Mēs esam palaiduši visus šajā rakstā minētos piemērus un skriptus Debian 10 Buster sistēmā. Tomēr jūs varat tos viegli atkārtot lielākajā daļā Linux apvalku. Šajā apmācībā mēs izmantojam noklusējuma komandrindu Debian. Debian varat piekļūt tam, izmantojot lietojumprogrammu palaidēja meklēšanas joslu šādi:







Lai piekļūtu lietojumprogrammu palaidējam, vienkārši nospiediet tastatūras taustiņu Super/Windows.

$ () Komandu aizstāšana

Saskaņā ar oficiālo GNU Bash rokasgrāmatu:



Komandu aizstāšana ļauj komandas izvadam aizstāt pašu komandu. Bash veic paplašināšanu, izpildot komandu un aizstājot komandas aizstāšanu ar komandas standarta izvadi, izdzēšot visas pēdējās rindiņas. Iegultās rindiņas netiek izdzēstas, bet tās var tikt noņemtas vārdu sadalīšanas laikā. Komandu aizstāšana notiek, ja komanda ir pievienota šādi:

$(komandu)
vai
``komandu``

Piemēram, šādas atbalss komandas aizstāj datuma komandas izvadi kā ievadi:

$izmest ārā$(datums)
$izmest ārā'datums'

Varat arī izmantot komandu aizstāšanu, lai mainīgajam piešķirtu vērtību. Piemēram, šodienas datumu izdrukāsim ar mainīgo TODAY šādi:

$ŠODIEN= $(datums)
$izmest ārā '$ TODAY'

Vēl viena komandu aizstāšanas lietderība ir čaulas cilpās, lai iegūtu ievadi. Šeit mēs mēģināsim izdrukāt visus .txt failus mūsu mājas mapē, izmantojot komandu aizstāšanu:

priekšfiekšā /mājas/tev/ *.txt
darīt
izmest ārā '$ f'
darīts

Komandu aizstāšanas izmantošana čaulas skriptā

Iepriekš minētie piemēri ir daži veidi, kā jūs varat izmantot komandu aizstāšanas spēku savā čaulas skriptā. Šeit ir statusa atskaites paraugs, ko varam izdrukāt, izmantojot šādu čaulas skriptu:

#!/bin/sh

izmest ārā ***Statusa pārskats***

ŠODIEN= $(datums)
izmest ārā 'Šodien ir$ TODAY'

LIETOTĀJI= $(PVO | tualete-viņi)
izmest ārā '$ LIETOTĀJIlietotāji šobrīd ir pieteikušies '

LAIKS= $(datums;darbības laiks)
izmest ārā 'Darbības laiks ir$ UPTIME'

Komandu aizstāšana šajā skriptā ir izmantota trīs reizes; drukājot datumu, reģistrētos lietotājus un darbības laiku. Mēs saglabājām skriptu šādi:

Padarīja to izpildāmu un pēc tam izpildīja, izmantojot šādu komandu:

$chmod+ x statuss.sh
$./statys.sh

Šeit ir mūsu status.sh skripta rezultāts:

Jūs, protams, varat izveidot nozīmīgākus skriptus, ievērojot mūsu tikko minētos piemērus.

$ {} Parametra aizstāšana/paplašināšana

Parametrs Bash ir entītija, ko izmanto vērtību saglabāšanai. Uz parametru var atsaukties skaitlis, nosaukums vai īpašs simbols. Ja uz parametru atsaucas skaitlis, to sauc par a pozicionālais parametrs . Ja uz parametru atsaucas nosaukums, to sauc par a mainīgais . Ja uz parametru atsaucas īpašs simbols, tas nozīmē, ka tie ir automātiski iestatīti parametri ar īpašu pielietojumu.

Parametru paplašināšana/aizstāšana ir vērtības iegūšanas process no atsauces entītijas/parametra. Tas ir tāpat kā jūs paplašināt mainīgo, lai iegūtu tā vērtību.

Vienkāršākā iespējamā parametru paplašināšanas sintakse ir šāda:

Lūk, kā jūs varat izmantot parametru paplašināšanu Bash:

$ {parameter}

Piemēram, vienkāršākais lietojums ir aizstāt parametru ar tā vērtību:

$vārds='john doe'
$izmest ārā $ {name}

Šī komanda aizstās mainīgā nosaukuma vērtību, kas jāizmanto komandai echo:

Jūs varētu domāt, ka to pašu var panākt, izvairoties no cirtainām lencēm šādi:

Atbilde ir tāda, ka parametru paplašināšanas laikā šīs cirtainās figūriekavas palīdz norobežot mainīgā nosaukumu. Paskaidrosim, ko mēs šeit domājam, ierobežojot. Ļaujiet man sistēmā palaist šādu komandu:

$izmest ārā 'Personas vārds ir$ name_'

Rezultātā netika izdrukāta mainīgā nosaukuma vērtība, jo sistēma domāja, ka es atsaucos uz mainīgo nosaukumu_. Tādējādi mans mainīgā nosaukums netika norobežots. Cirtainās figūriekavas šajā piemērā norobežos mainīgā nosaukumu un atgriezīs rezultātus šādi:

$izmest ārā 'Personas vārds ir$ {name}_ '

Šeit ir visi veidi, kā mainīgie tiek aizstāti Shell:

$ {variable} Šī komanda aizstāj mainīgā vērtību.
$ {mainīgais: -word} Ja mainīgais ir nulle vai ja tas nav iestatīts, mainīgais tiek aizstāts ar vārdu. Mainīgā vērtība nemainās.
$ {mainīgais: = vārds} Ja mainīgais ir nulle vai ja tas nav iestatīts, mainīgā vērtība tiek iestatīta uz vārdu.
$ {variable:? message} Ja mainīgais ir nulle vai ja tas nav iestatīts, ziņojums tiek izdrukāts ar standarta bash kļūdu.
$ {mainīgais:+vārds} Ja mainīgais ir iestatīts, vārds tiek aizstāts ar mainīgo. Tomēr paša mainīgā vērtība nemainās.

Iepriekš minētie piemēri ir daži veidi, kā jūs varat izmantot mainīgās aizvietošanas spēku Bash. Šos veidus, kā izmantot paplašinājumu, varat iekļaut čaulas skriptos, lai optimāli sasniegtu savu uzdevumu.