Sõltumata kasutatavast Linuxi levitamisest, ― pole kahtlust, et minu lemmik on Ubuntu― kohe, kui selle süsteemi kasutama hakkame automatiseerimisvajadused. See tähendab: loo meie enda käsud mis täidavad teatud käske isikupärastatud viisil. See vajadus võib olla tingitud teatud põhjustest:
- Lihtsustage süntaksit käskudest, mida me tavaliselt täidame.
- Tehke toiminguid, mis hõlmavad kõiki vajadust, mida süsteemis ette ei nähta töökorras.
- Järjekorrad mida me usinalt kordame.
Ehkki bashi skripti saab käivitada mis tahes kataloogis / mis tahes, on see tavaliselt nii looge nende skriptide hostimiseks kataloog. Minu puhul:
$ mkdir /home/pedro/.bin
Ma usun seda kataloog (peidetud nime ees punktiga juhtides) hoida kõiki skripte, mida ma seal kasutan. Sellel, et kataloogi nimi on peidetud, pole muud tähendust kui - kui pole sõnaselgelt öeldud teisiti - ei kuvata failivaaturist / home / pedro kuvamisel graafilises režiimis.
Nüüd peate teavitage Linuxi, et see peaks ka sinna vaatama (/home/pedro/.bin) terminalist täidetavad korraldused.
$ PATH=$PATH;/home/pedro/.bin
Nii otsib süsteem meie tellimusi sealt kuni seansi sulgeme. Selle ühenduse püsivaks muutmiseks:
$ sudo nano /etc/environment
ja lisame
:/home/pedro/.bin
rea PATH lõpus on väga oluline mitte unustada koolonit ka kataloogi aadressi ees, kuna see on liitmismehhanism.
Meie esimene samm-sammult skript
Me loome oma faili, minu puhul nii:
$ touch ~/.bin/donde
Ja selle muutmiseks võite kasutada eelistatud redaktorit või järgida seda näidustust:
$ gedit ~/.bin/donde &
Ja lisame järgmise sisu:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
Skripti analüüs
Meie esimene kõneliin «seebang»(#! / Usr / bin / env bash) paluge Linuxil teatada kus asub bashi kest ja see, mis järgneb, täidetakse vastavalt bashi nõuetele. See ettevaatusabinõu selles on mugav veenduda meie skriptid töötavad mis tahes installimisel. Teine võimalik seebang ta naeris:
#!/bin/bash
Nende vahe võib olla väga kohutav ja ma seletan seda. Selles viimases Eeldan, et meie süsteemis bashi kest asub aadressil / bin / bash. Kui aga pakun stsenaariumis välja Ma ei tea vist, kus see asub bashi tõlk. Ma palun süsteemilt, et ta selle aadressi esitaks.
Kolmas rida: Nagu näete, on teine rida if. Bashi jaoks tähemärgid «$#« sisaldab parameetrite arvu, mille edastame käsurealt. Seetõttu »kui [$ # -lt 1];» tähendab sõna otseses mõttes "kui parameetrite arv on väiksem kui 1".
Neljas rida: Siis (sõna otseses mõttes inglise keelest tõlkides: siis), siin näidatakse, et mis edasi saab viiakse läbi siis, kui seisundi hindamine if tõsi olema: teisisõnu, parameetrite arv on väiksem kui 1, see tähendab null.
Viies rida: kui käivitame oma skripti ilma parameetriteta, kuvatakse terminalis «Peate parameetri edastama».
Kuues rida: Näitab, et järgnev täidetakse kui meie deklareeritud tingimus ei vasta tõele.
Seitsmes rida: Se käivitage käsk «kus on« kaasas sisu, mille oleme edastanud esimene parameeter.
Kaheksas rida:fi»Näitab, et plokk lõpeb if.
Meie skripti testimine
On oluline lisage kirjutamisõigused skripti juurde:
$ chmod -x ~/.bin/donde
Ilma selleta ilmub viga "luba keelatud".. Pärast seda saame oma skripti käivitada.
$ donde php
See peaks meile näitama php binaaride asukohta, nende lähtefaile ja manulehti. Midagi sellist:
php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php /usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache /usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz
Kokkuvõte
- Lubame a kataloog ".bin" meie skriptide paigutamiseks.
- Me varustame teave Linuxile selle kataloogi kaasamiseks käsuotsingutesse.
- Me loome oma skripti.
- Erinevus erinevad seebang.
- Kasutamine parameetritega $ # edastatud arv.
- Kasutamine esimene parameeter koos $1.
Loodan ja soovin, et see skript oleks teile kasulik.
4 kommentaari, jätke oma
Väga hea ja hästi selgitatud, kuid millele viitab parameeter?
Aitäh Miguel!
Mõistan parameetrite järgi kogu täiendavat teavet, mis antakse programmile, funktsioonile või süsteemile. Kuna see võib olla tülikas, lubage mul vastata teile mõne näite abil.
Linuxi käsus faili a.txt kopeerimiseks faili b.txt kirjutaksime järgmise:
$ Ap a.txt b.txt
Siin saab cp-programm vastu kaks parameetrit, mis on kahe faili nimed, esimene (peab olemas olema) a.txt ja teine b.txt.
Teine näide: kui saadate käsuga konsoolilt printimiseks
$ lp fail.pdf
Sel juhul on "file.pdf" lp-i parameeter.
Loodan, et olen teie kahtlustega rahul olnud.
seoses
Minu kommentaarid ei tule välja, see on austuse puudumine, ma ei naase siia foorumisse.
Ma ei tea, mis on juhtunud, igal juhul on see avaldatud.
Tervitused.