Beginners Guide Pikeun BASH - Kaayaan Jeung variabel

perkenalan

Wilujeng sumping ka bagian katilu ti "Beginners Guide Pikeun BASH". Lamun geus lasut dua artikel saméméhna lajeng Anjeun meureun bakal hoyong terang kumaha damel pituduh ieu béda jeung Panungtun BASH scripting lianna.

Buku ieu keur ditulis ku novice lengkep mun BASH sarta ku kituna maca hiji anjeun neuleuman sakumaha kuring diajar. Whilst Kami a novice mun BASH abdi datangna ti tukang ngembangkeun software najan lolobana barang nu Kuring geus ditulis geus keur platform Windows.

Anjeun tiasa ningali dua Panungtun munggaran ku ngadatangan:

Mun anjeun anyar pikeun BASH scripting I nyarankeun maca dua Panungtun mimiti saméméh neraskeun kalawan hiji ieu.

Dina Buku ieu kuring bakal panyorot cara ngagunakeun pernyataan kondisional mun test input pamaké sarta ngadalikeun kumaha a fungsi naskah.

install rsstail

Dina urutan nuturkeun pituduh kieu anjeun bakal kudu masang aplikasi garis paréntah disebut rsstail nu dipaké maca RSS Feed .

Upami Anjeun keur make hiji Debian / Ubuntu / mint tipe sebaran dumasar di handap:

sudo apt-meunang install rsstail

Pikeun Fedora / CentOS jsb ngetik di handap:

Yum install rsstail

Pikeun openSUSE tipe di handap:

zypper install rsstail

Pernyataan IF

Buka nepi terminal sarta nyieun hiji file disebut rssget.sh ku ngetikkeun di handap:

sudo nano rssget.sh

Dina editor nano asupkeun téks handap:

#! / bin / bash
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;

Simpen file ku mencét Ctrl jeung O lajeng kaluar ku mencét Ctrl sarta X.

Ngajalankeun naskah ku ngetikkeun handap:

sh rssget.sh

Skrip baris balik daptar judul ti feed linux.about.com RSS.

Teu mangrupa skrip overly mangpaat sabab ngan retrieves kana judul ti salah RSS feed tapi teu ngahemat ngabogaan apal jalur ka feed Linux.about.com RSS.

Buka up skrip rssget.sh di nano deui tur ngedit file kasampak saperti kieu:

#! / bin / bash

lamun [$ 1 = "verbose"]
saterusna
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Ngajalankeun skrip deui ku ngetikkeun di handap:

sh rssget.sh verbose

waktos ieu feed RSS asalna deui kalawan judul, link na pedaran.

Hayu urang nganalisis naskah dina bit jéntré:

The #! / Bin / bash némbongan dina unggal Aksara kami nulis. Garis hareup dasarna Sigana di parameter input kahiji disadiakeun ku pamaké jeung compares ka kecap "verbose". Mun parameter input sarta kecap "verbose" cocog jeung garis antara lajeng jeung fi nu lumpat.

Naskah di luhur geus écés flawed. Naon kajadian lamun teu nyadiakeun hiji parameter input pisan? Dina jawaban eta anjeun meunang kasalahan sapanjang garis tina operator kaduga.

The cacad utama sejenna nyaeta yen lamun teu nyadiakeun kecap "verbose" lajeng nanaon kajadian pisan. Ideally lamun teu nyadiakeun kecap verbose naskah bakal balik daptar judul.

Paké nano deui mun ngedit file rssget.sh sarta ngajadikeun amandemen kode teh saperti kieu:

#! / bin / bash

lamun [$ 1 = "verbose"]
saterusna
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
lamun henteu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Simpen file tur ngajalankeun eta ku ngetikkeun handap:

sh rssget.sh verbose

Hiji daptar judul, déskripsi jeung Tumbu bakal muncul. Ayeuna ngajalankeun deui saperti kieu:

judul sh rssget.sh

waktos Ieu ngan daptar judul némbongan.

Bagian tambahan naskah nyaéta dina garis 4 sarta nawarkeun pernyataan sejenna. Dasarna naskah kiwari nyebutkeun lamun parameter kahiji nyaeta kecap "verbose" meunang katerangan, Tumbu na judul keur feed RSS tapi lamun parameter kahiji nyaeta lain nanaon ngan meunang daptar judul.

naskah tos ningkat rada tapi masih flawed. Lamun kalah ka asupkeun parameter a anjeun masih bakal meunang kasalahan. Malah lamun ngalakukeun nyadiakeun parameter a, ngan ku cara nyebutkeun anjeun teu hayang verbose henteu hartosna rék judul wungkul. Anjeun bisa kakarék dieja verbose salah misalna atawa anjeun bisa geus diketik japati nu tangtu hartina.

Sateuacan urang cobaan jeung mupus isu ieu kuring rék némbongkeun Anjeun salah deui parentah anu mana jeung pernyataan IF.

Ngédit Aksara rssget.sh Anjeun kasampak saperti kieu:

#! / bin / bash

lamun [$ 1 = "sagala"]
saterusna
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "pedaran"]
saterusna
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

lamun henteu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Kuring mutuskeun meunang leupas tina kecap verbose na diganti deui ku sadayana. Nu sanes bagian penting. Naskah di luhur nawarkeun elif nu cara pondok tina nyebutkeun Nabi IF.

Kiwari naskah jalan saperti kieu. Lamun ngajalankeun sh rssget.sh sadayana lajeng anjeun meunang déskripsi, Tumbu na judul. Lamun gantina Anjeun ngan ngajalankeun sh pedaran rssget.sh Anjeun ngan bakal meunang judul na déskripsi. Lamun nyadiakeun sagala kecap séjén anjeun bakal meunang daptar judul.

Ieu nawarkeun cara tina gancang datang nepi kalawan daptar pernyataan kondisional. Hiji jalan alternatif seja ELIF nyaeta ngagunakeun naon katelah nested IF pernyataan.

nuturkeun conto némbongkeun kumaha nested IF pernyataan dianggo:

#! / bin / bash

lamun [$ 2 = "aboutdotcom"]
saterusna
lamun [$ 1 = "sagala"]
saterusna
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "pedaran"]
saterusna
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

lamun henteu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
lamun henteu
lamun [$ 1 = "sagala"]
saterusna
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "pedaran"]
saterusna
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
lamun henteu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi

Ngarasa Luncat ka ngetik sagala rupa nu di lamun resep atanapi nyalin teras lebetkeun file rssget.sh Anjeun.

Naskah di luhur nawarkeun hiji 2nd parameter nu ngidinan Anjeun milih boh "about.com" atawa "lxer.com" hiji feed hiji RSS.

Pikeun ngajalankeun eta tipe anjeun di handap:

sh rssget.sh sadayana aboutdotcom

atawa

sh rssget.sh sadayana lxer

Anjeun tiasa tangtu ngaganti kabéh kalayan déskripsi atawa judul nyadiakeun ngan déskripsi atawa ngan judul.

Dasarna kode di luhur nyebutkeun lamun parameter kadua aboutdotcom lajeng kasampak di kadua lamun pernyataan nu sami salah tina Aksara saméméhna sejenna lamun parameter kadua lxer lajeng kasampak di batin mun pernyataan deui pikeun mutuskeun pikeun némbongkeun judul, déskripsi atawa sagalana.

Aksara nu geus disadiakeun murni sakumaha conto nested IF pernyataan na aya kitu loba hal salah yen Aksara eta bakal nyandak artikel séjén pikeun ngajelaskeun kabeh. Isu utama nyaeta teu scalable.

Ngabayangkeun anjeun hayang nambahkeun feed RSS sejen kayaning Sapopoé pamaké Linux Ubuntu atawa Linux Ubuntu Dinten? naskah bakal jadi badag sarta lamun mutuskeun yén anjeun hayang batin IF pernyataan ngarobih anjeun bakal kudu ngarobah éta di sababaraha tempat.

Whilst aya hiji waktu jeung tempat pikeun nested IF maranéhanana kudu dipake sparingly. Aya biasana cara pikeun refactor kode anjeun ku kituna anjeun teu kudu di nested IF pisan. Kuring bakal datang dina keur subjék ieu dina artikel nu bakal datang.

Hayu urang ayeuna kasampak di ngaropéa isu urang ngasupkeun parameter Duff. Contona dina naskah di luhur lamun pamaké diasupkeun hal lian ti "aboutdotcom" salaku 2nd parameter lajeng daptar artikel muncul ti feed RSS ti LXER paduli sakumaha keur naha pamaké asupkeun lxer atanapi henteu.

Sajaba lamun pamaké teu ngalebetkeun "sagala" atawa "pedaran" salaku parameter 1st lajeng standar mangrupa daptar judul nu bisa jadi atawa henteu jadi naon pamaké anu dimaksud.

Tingali di Aksara handap (atawa nyalin teras lebetkeun file rssget.sh Anjeun.

#! / bin / bash

lamun [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
saterusna
lamun [$ 1 = "sagala"] || [$ 1 = "pedaran"] || [$ 1 = "Judul"]
saterusna
lamun [$ 2 = "aboutdotcom"]
saterusna

lamun [$ 1 = "sagala"]
saterusna
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "pedaran"]
saterusna
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

lamun henteu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
lamun henteu
lamun [$ 1 = "sagala"]
saterusna
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "pedaran"]
saterusna
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
lamun henteu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi

Hal pangheulana catetan éta naskah ayeuna sia cukup badag sarta anjeun bisa gancang tingali kumaha kaluar kontrol nested IF pernyataan bisa jadi.

Bit anu penting dina naskah ieu pernyataan IF || pernyataan lajeng bagian on garis 2 sarta garis 4.

|| nu nangtung pikeun OR. Jadi jalur lamun [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"] cék naha 2nd parameter sarua jeung "aboutdotcom" atawa "lxer". Mun teu lajeng pernyataan IF geus réngsé alatan euweuh pernyataan sejenna keur paling IF luar.

Nya kitu dina garis 4 jalur lamun [$ 1 = "sagala"] || [$ 1 = "pedaran"] || [$ 1 = "Judul"] cék naha parameter 1st sarua boh "sagala" atawa "pedaran" atawa "judulna".

Ayeuna lamun pamaké ngalir sh rssget.sh kentang kéju nanaon geus balik sedengkeun saméméh maranéhna bakal nampi daptar judul tina LXER.

Sabalikna ti || nyaeta &&. Operator && nangtung pikeun AND.

Kuring keur bade ngadamel naskah kasampak malah leuwih kawas ngimpina a tapi ngajadikeun dipariksa kabeh penting pikeun mastikeun pamaké geus disadiakeun 2 parameter.

#! / bin / bash

lamun [$ # -eq 2]
saterusna

lamun [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
saterusna
lamun [$ 1 = "sagala"] || [$ 1 = "pedaran"] || [$ 1 = "Judul"]
saterusna
lamun [$ 2 = "aboutdotcom"]
saterusna

lamun [$ 1 = "sagala"]
saterusna
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "pedaran"]
saterusna
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

lamun henteu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
lamun henteu
lamun [$ 1 = "sagala"]
saterusna
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "pedaran"]
saterusna
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
lamun henteu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi
fi

Hijina bit anu mangrupa tambahan dina naskah nu mangrupa sejen luar IF pernyataan saperti kieu: lamun [$ # -eq 2]. Lamun baca artikel ngeunaan parameter input anjeun bakal terang yen $ # mulih a count tina jumlah parameters input. -eq nu nangtung for mah sarua jeung. kituna pernyataan IF cek nu pamaké diasupkeun 2 parameter jeung lamun maranéhna teu eta ngan kaluar tanpa ngalakonan nanaon. (Teu utamana friendly).

Kami sadar yen tutorial ieu lalaki rada badag. Aya teu leuwih nutupan minggu ieu tapi hoyong mantuan beberes up naskah méméh kami rengse.

Hiji paréntah panungtungan nu kudu ngalenyepan pernyataan kondisional teh pernyataan hal.

#! / bin / bash


lamun [$ # -eq 2]
saterusna
bisi $ 2 di
aboutdotcom)
bisi $ 1 dina
sadayana)
rsstail -d -l -u z.about.com/6/o/m/linux_p2.xml
;;
pedaran)
rsstail -d -u z.about.com/6/o/m/linux_p2.xml
;;
judulna)
rsstail -u z.about.com/6/o/m/linux.about.com/6/o/m/linux_p2.xml
;;
esac
;;
lxer)
bisi $ 1 dina
sadayana)
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
;;
pedaran)
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
;;
judulna)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;;
esac
;;
esac
fi

Pernyataan hal mangrupakeun cara nicer nulis IF sejenna IF sejenna IF sejenna IF.

Contona logika ieu

IF buah = cau
lajeng ieu
Sejenna IF buah = jeruk
lajeng ieu
Sejenna IF buah = anggur
lajeng ieu
TAMAT IF

bisa dituliskeun salaku:

bisi buah dina
pisang)
ngalakukeun ieu
;;
jeruk)
ngalakukeun ieu
;;
anggur)
ngalakukeun ieu
;;
esac

Dasarna di item kahiji sanggeus hal mangrupa hal nu bade ngabandingkeun (ie buah). Lajeng unggal item saméméh kurung mangrupakeun hal anjeun ngabandingkeun ngalawan tur lamun eta loyog jeung garis harita ;; bakal lumpat. Hiji pernyataan hal ieu terminated jeung esac sabalikna (nu hal tukang).

Dina naskah rssget.sh pernyataan bisi ngaluarkeun sababaraha nu nyarang uih sanajan teu bener ngaronjatkeun deui cukup.

Bener ngaronjatkeun Aksara I kedah ngenalkeun anjeun variabel.

Tingali di kode handap:

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
tampilan = ""
url = ""

lamun [$ # -lt 2] || [$ # -gt 2]
saterusna
bahana "pamakéan: rssget.sh [sadayana | pedaran | judulna] [aboutdotcom | lxer]";
Kaluar;
fi

bisi $ 1 dina
sadayana)
tampilan = "- d -l -u"
;;
pedaran)
tampilan = "- d -u"
;;
judulna)
tampilan = "- u"
;;
esac

bisi $ 2 di
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
esac
rsstail $ tampilan $ url;

A variabel diartikeun ku mere eta ngaran lajeng assigning hiji nilai jeung eta. Dina conto di luhur di handap ngarupakeun variabel assignments:

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
tampilan = ""
url = ""

naskah téh instan langkung manageable ku ngagunakeun variabel. Contona masing-masing parameter anu diatur nyalira na jadi aya euweuh nested IF pernyataan.

Variabel tampilan ayeuna diatur gumantung naha maneh milih kabeh, pedaran atawa judul jeung variabel url disetel ka nilai variabel aboutdotcom atawa nilai variabel lxer gumantung naha maneh milih aboutdotcom atanapi lxer.

Paréntah rsstail kiwari ngan boga ngagunakeun nilai tampilan na url ngajalankeun neuleu.

Whilst variabel anu diatur ngan ku méré éta ngaran, ka sabenerna make eta maneh kudu nempatkeun hiji $ tanda di hareup aranjeunna. Istilah sanésna variabel = nilai susunan variabel ka nilai sedengkeun $ hartosna variabel masihan kuring eusi variabel.

handap teh skrip final pikeun tutorial ieu.

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
everydaylinuxuser = "http://feeds.feedburner.com/everydaylinuxuser/WLlg"
linuxtoday = "http://feedproxy.google.com/linuxtoday/linux"
pamakéan = "pamakéan: rssget.sh [sadayana | pedaran | judulna] [lxer | aboutdotcom | everydaylinuxuser | linuxtoday]"
tampilan = ""
url = ""

lamun [$ # -lt 2] || [$ # -gt 2]
saterusna
pamakéan $ bahana;
Kaluar;
fi

bisi $ 1 dina
sadayana)
tampilan = "- d -l -u"
;;
pedaran)
tampilan = "- d -u"
;;
judulna)
tampilan = "- u"
;;
*)
pamakéan $ bahana;
Kaluar;
;;
esac

bisi $ 2 di
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
linuxtoday)
url = $ linuxtoday;
;;
everydaylinuxuser)
url = $ everydaylinuxuser;
;;
*)
pamakéan $ bahana;
Kaluar;
esac

rsstail $ tampilan $ url;

Naskah di luhur nawarkeun deui eupan RSS na aya variabel pamakéan anu ngabejaan ka pamaké cara ngagunakeun naskah lamun aranjeunna boh teu ngalebetkeun 2 variabel atawa maranéhna asupkeun pilihan lepat keur variabel.

singgetan

Ieu geus hiji artikel epik jeung bisa geus Isro jauh teuing teuing geura-giru. Dina Buku hareup kuring baris némbongkeun Anjeun sakabéh pilihan ngabandingkeun pikeun IF pernyataan na aya kénéh leuwih ngobrol ngeunaan kalawan Wasalam ka variabel.

Aya ogé leuwih nu bisa dipigawé pikeun ngaronjatkeun Aksara luhur na ieu bakal katutupan di Panungtun hareup salaku urang neuleuman puteran, grep jeung ungkapan biasa.

Pariksa Kumaha Ka (Gulung ka handap kaliwat kategori pikeun nempo daptar artikel) bagian tina l inux.about.com pikeun manggihan Panungtun leuwih mangpaat tina dual booting Windows jeung Ubuntu kana netepkeun up mesin virtual maké buleud GNOME .