Sådan køres et Shell Script i Linuk [Essentials forklaret for begyndere]

der er to måder at køre et shell-script på. Du kan bruge:

bash script.sh

eller du kan udføre shell-scriptet som dette:

./script.sh

det er måske simpelt, men det forklarer ikke meget. Bare rolig, jeg vil gøre den nødvendige forklaring med eksempler, så du forstår, hvorfor en bestemt syntaks bruges i det givne format, mens du kører et shell-script.

jeg vil bruge dette one line shell script til at gøre tingene så ukomplicerede som muligt:

:~/Scripts$ cat hello.sh echo "Hello World!"

Metode 1: Kørsel af et shell-script ved at sende filen som argument til shell

den første metode indebærer at overføre scriptfilnavnet som et argument til skallen.

i betragtning af at bash er standardskallen, kan du køre et script som dette:

bash hello.sh

kender du fordelen ved denne tilgang? Dit script behøver ikke at have tilladelse til at udføre. Temmelig praktisk til hurtige og enkle opgaver.

Kør et Shell Script Linuk
Kør et Shell Script Linuk

hvis du ikke allerede er bekendt, anbefaler jeg dig at læse min detaljerede vejledning om filtilladelse i Linuk.

Husk, at det skal være et shell script, som du passerer som argument. Et shell script er sammensat af kommandoer. Hvis du bruger en normal tekstfil, vil den klage over forkerte kommandoer.

kører tekstfil som Script
kører en tekstfil som Script

i denne tilgang angav du eksplicit, at du vil bruge bash som tolk til scriptet.

Shell er bare et program, og bash er en implementering af det. Der er andre sådanne skaller program som ksh, SSH, etc. Hvis du har andre skaller installeret, kan du også bruge det i stedet for bash.

for eksempel installerede jeg SSH og brugte det til at køre det samme script:

Udfør Shell Script med SSH
Udfør Shell Script med SSH

Anbefalet læsning:

Metode 2: Udfør shell script ved at angive sin sti

den anden metode til at køre et shell script er ved at give sin sti. Men for at det skal være muligt, skal din fil være eksekverbar. Ellers vil du have” tilladelse nægtet ” fejl, når du forsøger at udføre scriptet.

så først skal du sørge for, at dit script har tilladelse til at udføre. Du kan bruge kommandoen chmod til at give dig selv denne tilladelse som denne:

chmod u+x script.sh

når dit script er eksekverbart, er alt hvad du skal gøre at skrive filnavnet sammen med dets absolutte eller relative sti. Ofte er du i samme mappe, så du bruger det bare sådan:

./script.sh

hvis du ikke er i samme mappe som dit script, kan du angive det den absolutte eller relative sti til scriptet:

Running Shell Script i anden mappe
Running Shell Script i anden mappe

det ./ før scriptet er vigtigt (når du er i samme mappe som scriptet)

udførelse af Shell Scripts

Hvorfor kan du ikke bruge scriptnavnet, når du er i samme mappe? Det skyldes, at dine systemer ser efter, at de eksekverbare filer skal køre i et par udvalgte mapper, der er angivet i PATH-variablen.

her er værdien af STIVARIABEL for mit system:

:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

dette betyder, at enhver fil med eksekveringstilladelser i et af følgende mapper kan udføres hvor som helst i systemet:

  • /hjem / abhishek/.lokal/bin
  • /usr/lokal/sbin
  • /usr/lokal/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
  • /bin
  • /usr/spil
  • /usr/local/games
  • /snap / bin

de binære filer eller eksekverbare filer til kommandoer som LS, cat osv. Dette er grunden til, at du er i stand til at køre disse kommandoer hvor som helst på dit system bare ved at bruge deres navne. Se, LS-kommandoen er placeret i/usr / bin-mappen.

placering af kommandolinjen

når du angiver scriptet uden den absolutte eller relative sti, kan det ikke finde det i de mapper, der er nævnt i STIVARIABLEN.

hvorfor de fleste shell scripts indeholder #! / bin / bash i begyndelsen af shell scripts?

husk, hvordan jeg nævnte, at shell kun er et program, og der er forskellige implementeringer af skaller.

når du bruger #! / bin / bash, du angiver, at scriptet skal køre med bash som tolk. Hvis du ikke gør det og kører et script ind ./script.sh måde, det er normalt køre med uanset shell du kører.

betyder det noget? Det kunne det. Se, det meste af shell-syntaksen er almindelig i alle slags skal, men nogle kan være forskellige.

for eksempel er arrayadfærden forskellig i bash-og SHSH-skaller. I SSH starter arrayindekset ved 1 i stedet for 0.

Bash Vs SSH
Bash Vs SSH

Brug #! / bin / bash angiver, at scriptet er bash shell script og skal køres med bash som tolk uanset skallen, der bruges på systemet. Hvis du bruger en bestemt syntaks, kan du angive, at det er et script ved at tilføje #! / bin / SSH som første linje i scriptet.

mellemrummet mellem #! / bin / bash betyder ikke noget. Du kan også bruge #!/ bin / bash.

var det nyttigt?

jeg håber, at denne artikel tilføjes til din viden. Hvis du stadig har spørgsmål eller forslag, bedes du efterlade en kommentar.

ekspertbrugere kan stadig nitpick denne artikel om ting, jeg gik glip af. Men problemet med sådanne begynderemner er, at det ikke er let at finde den rette balance mellem information og undgå at have for meget eller for få detaljer.

hvis du er interesseret i at lære bash-script, har vi en hel Bash-Begynderserie på vores sysadmin-fokuserede hjemmeside. Hvis du vil, kan du også købe e-Bogen med yderligere øvelser til støtte for Håndbog.

ligesom hvad du læser? Venligst dele det med andre.

50aktier
  • Facebook0
  • Kvidre49
  • LinkedIn1
  • Reddit0

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.