Kumaha Tulis Bash bari-puteran

Paréntah, Rumpaka, sarta Conto

Anjeun tiasa ngaéksekusi tina sekuen Paréntah ku tulisan kana file Aksara lajeng ngajalankeun eta.

A file Aksara téh cukup ku hiji file téks, biasana jeung extension file .SH, éta ngandung tina sekuen parentah nu bisa ogé jadi dieksekusi tina garis paréntah ( cangkang ).

Bari Conto Citakan: Loop

Di handap ieu conto loop bari. Nalika dieksekusi, file Aksara ieu bakal nyitak angka 1 nepi 9 dina layar. Bari-pernyataan méré Anjeun langkung kalenturan pikeun nangtukeun kaayaan terminasi batan pikeun-loop .

#! / bin / count bash = 1 bari [$ cacah -le 9] do bahana "$ count" sare 1 ((cacah ++)) Puguh

Contona, anjeun bisa nyieun naskah saméméhna hiji loop wates ku omitting pernyataan increment "((cacah ++))":

#! / bin / count bash = 1 bari [$ cacah -le 9] ulah bahana "$ count" sare 1 Puguh

The "sare 1" pernyataan reureuh dina palaksanaan pikeun 1 detik dina unggal Iteration. Nganggo Ctrl + C keyboard potong kompas ka nungtungan prosés.

Anjeun oge bisa nyieun hiji loop wates ku putting titik hiji sakumaha kondisi:

! # / bin / count bash = 1 bari: ulah bahana "$ count" sare 1 ((cacah ++)) Puguh

Dina urutan nganggo sababaraha kaayaan di bari-loop, Anjeun kudu nganggo notasi bracket ganda pasagi:

cacah = 1 dipigawé = 0 bari [[$ cacah -le 9] && [$ dipigawé == 0]] ulah bahana "$ count" sare 1 ((cacah ++)) mun [$ count == 5]; lajeng $ dipigawé = 1 fi Puguh

Dina ieu naskah, variabel "dipigawe" ieu initialized ka 0 lajeng disetel ka 1 lamun golongan cacah ngahontal 5. Kaayaan loop nyatakeun yén loop bari baris nuluykeun salami "cacah" nyaeta kirang ti salapan na "dipigawe" sarua mun sarua jeung nol. Kituna puteran kaluar nalika golongan cacah sarua 5.

The "&&" hartina logis "na" jeung "||" hartina logis "atawa".

Notasi alternatip pikeun konjungsi "na" jeung "atawa" dina kondisi anu "-a" jeung "-o" kalawan kurung pasagi tunggal. Kaayaan di luhur:

[[$ Cacah -le 9] && [$ dipigawé == 0]]

... bisa dituliskeun salaku:

[$ Cacah -le 9] -a [$ dipigawé == 0]

Maca hiji file téks anu ilaharna dilakukeun ku loop bari. Dina conto di handap ieu, naskah bash berbunyi garis eusi ku garis file disebut "inventory.txt:"

File = inventory.txt exec 6

Garis kahiji nangtukeun nami file input ka "file" variable. Garis kadua ngaheéat nu "baku input" dina file descriptor "6" (bisa jadi naon baé nilai antara 3 jeung 9). Hal ieu dilakukeun sangkan éta "baku input" bisa dibalikeun kana berkas descriptor "0" di tungtung naskah (ningali pernyataan "exec 0 Dina garis 3 file input anu ditugaskeun ka berkas descriptor" 0 "nu dipaké pikeun input baku. The "baca" pernyataan lajeng maos hiji garis ti file dina unggal Iteration tur nangtukeun eta kana "line1" variable.

Dina raraga prematurely kaluar bari-loop, anjeun tiasa nganggo pernyataan putus kawas kieu:

cacah = 1 dipigawé = 0 bari [$ cacah -le 9] do bahana "$ count" sare 1 ((cacah ++)) mun [$ count == 5] lajeng megatkeun fi dipigawé bahana réngsé

Pernyataan putus skips palaksanaan program kana tungtung bari loop na executes pernyataan wae di handap eta. Dina hal ieu, pernyataan nu "bahana réngsé".

The nuluykeun pernyataan, di sisi séjén, skips ukur sesa bari pernyataan loop anu Iteration arus jeung jumps langsung ka Iteration hareup:

cacah = 1 dipigawé = 0 bari [$ cacah -le 9] ulah bobo 1 ((cacah ++)) mun [$ count == 5] lajeng neraskeun fi bahana "$ count" dipigawe bahana réngsé

Dina hal ieu, anu "nuluykeun" pernyataan ieu dibales lamun variabel "cacah" ngahontal 5. Ieu ngandung harti pernyataan saterusna (bahana "$ count") teu dibales on Iteration ieu (lamun nilai "cacah" nyaeta 5).