Kuidas käsurea argumente käsitseda basskriptis

How Handle Command Line Arguments Bash Script



Paljudel juhtudel nõuavad bash -skriptid argumendi väärtusi, et skriptile sisestusvõimalusi pakkuda. Saate käsurea argumente käsitseda bash -skriptis kahel viisil. Üks on kasutades argumendi muutujad ja teine ​​on kasutades getopts funktsiooni. Selles juhendis on näidatud, kuidas saate käsurea argumentidega hakkama saada.

Argumendimuutujate kasutamine:

Argumendi muutuja algab $ 0 -st. Peamine skriptifaili nimi salvestatakse $ 0 -sse, mis saab argumendi väärtused käsurea argumentidelt. Kui käsurealt edastatakse kaks argumenti, saadakse argumentide väärtused muutujatesse $ 1 ja $ 2 järjestikku.







Näide -1: kolme numbrilise väärtuse saatmine argumentidena

Looge bash -fail ja lisage järgmine kood. Skript saab kolm argumendi väärtust ja salvestatakse 1, 2 ja 3 dollari väärtuses. See loeb argumentide koguarvu, prindib argumentide väärtused silmusega ja ilma silmuseta. Lõpuks printige kõigi argumentide väärtuste summa.



#!/bin/bash

# Argumentide koguarvu loendamine
viskas välja „Argumentide koguarv: $#”

# Argumendi väärtuste lugemine individuaalselt
viskas välja 'Esimese argumendi väärtus: $ 1'
viskas välja 'Teise argumendi väärtus: 2 dollarit'
viskas välja 'Kolmas argumendi väärtus: 3 dollarit'

# Argumendi väärtuste lugemine silmuse abil
eestargvalsisse '[email protected]'
teha
viskas välja -n '$ argval'
tehtud

# Argumendi väärtuste lisamine
summa= $(($ 1+2 dollarit+3 dollarit))

# printige tulemus
viskas välja -Ja ' nSumma tulemus =$ summa'

Käivitage bash -fail kolme numbrilise argumendi väärtusega.



$löömacmdline1.shviiskümmend 35 viisteist





Näide -2: failinime võtmine argumendina

Looge bash -fail ja lisage järgmine kood, et loendada mis tahes faili tähemärkide koguarv. Siin edastatakse failinimi käsurea argumendina.

#!/bin/bash
faili nimi=$ 1
totaalne süsi=''tualett -c $ failinimi''
viskas välja „Tähemärkide koguarv on$ totalchar'

Käivitage bash -skript, mille failinimi on ühe argumendi väärtus, ja käivitage teine ​​käsk, et kontrollida selle faili tähemärkide koguarvu. Siin kasutatakse argumendi väärtusena faili töötaja.txt. Faili töötaja.txt tähemärkide koguarv on 204.



$löömacmdline2.sh töötaja.txt
$tualett -ctöötaja.txt

Funktsiooni getopts kasutamine:

Kui soovite salvestada andmeid andmebaasi või mõnda faili või luua käsurea argumentide väärtuste põhjal aruande teatud vormingus getopts funktsioon on ülesande täitmiseks parim võimalus. See on sisseehitatud linuxi funktsioon. Niisiis, saate seda funktsiooni oma skriptis hõlpsasti kasutada käsurealt vormindatud andmete lugemiseks.

Näide -1: argumentide lugemine funktsiooni getopts abil

Looge bash -fail ja lisage selle kasutamise mõistmiseks järgmine skript getopts funktsiooni. Funktsiooni „getopts” kasutatakse koos loopiga käsurea argumentide valikute ja argumentide väärtuste lugemiseks. Siin kasutatakse 4 võimalust 'Mina', 'n', 'm' ja 'Ja' . case -lauset kasutatakse konkreetse valiku sobitamiseks ja argumendi väärtuse salvestamiseks muutujale. Lõpuks printige muutuja väärtused.

#!/bin/bash
samas getopts ':minu sees:'vihane;teha
juhtum $ arg sisse
i) ID=$ OPTARG;;
n) Nimi=$ OPTARG;;
m) Valmistamise kuupäev=$ OPTARG;;
Ja) Aegumiskuupäev=$ OPTARG;;
esac
tehtud
viskas välja -Ja ' n$ ID $ Nimi $ Manufacturing_date $ Aegumiskuupäev n'

Käivitage fail järgmiste valikute ja argumentide väärtustega. Siin on p100 valiku -i väärtus, 'kuum kook' on -n valiku väärtus, '01 -01-2018 'on -m valiku väärtus ja '06 -01-2018' on väärtuse - e valik.

$löömacmdline3.sh-minap001-n 'Kuum kook' -m '01-01-2018' -Ja '06 -01-2018 '

Kui peate skriptis saatma lihtsaid väärtusi, on parem kasutada argumendimuutujaid. Kuid kui soovite saata andmeid vormindatud viisil, on parem kasutada funktsiooni getopts argumentide väärtuste toomiseks. Lisateabe saamiseks vaadake video !