Paano Pangasiwaan ang Mga Argumento ng Command Line sa isang Bash Script

How Handle Command Line Arguments Bash Script



Sa maraming mga kaso, ang mga bash script ay nangangailangan ng mga halaga ng argument upang magbigay ng mga pagpipilian sa pag-input sa script. Maaari mong hawakan ang mga argumento ng linya ng utos sa isang bash script sa pamamagitan ng dalawang paraan. Ang isa ay sa pamamagitan ng paggamit variable ng argumento at isa pa ay sa pamamagitan ng paggamit getopts pagpapaandar Kung paano mo mahawakan ang mga argumento ng linya ng utos ay ipinapakita sa tutorial na ito.

Gumagamit ng mga variable ng argumento:

Ang variable ng argumento ay nagsisimula sa $ 0. Ang pangunahing pangalan ng file ng script ay nakaimbak sa $ 0 na tumatanggap ng mga halaga ng argumento mula sa mga argument ng linya ng utos. Kung ang dalawang mga argumento ay naipasa sa linya ng utos pagkatapos ang mga halaga ng argument ay matatanggap sa mga variable na $ 1 at $ 2 nang sunud-sunod.







Halimbawa -1: Nagpapadala ng tatlong mga halagang bilang bilang bilang mga argumento

Lumikha ng isang bash file at idagdag ang sumusunod na code. Ang script ay makakatanggap ng tatlong mga halaga ng argument at iimbak sa $ 1, $ 2 at $ 3. Bibilangin nito ang kabuuang bilang ng mga argumento, i-print ang mga halaga ng argument na may loop at walang loop. Panghuli, i-print ang kabuuan ng lahat ng mga halaga ng argument.



#! / baseng / bash

# Nagbibilang ng kabuuang bilang ng mga argumento
itinapon 'Kabuuang bilang ng mga argumento: $ #'

# Pagbabasa ng mga halaga ng argumento nang paisa-isa
itinapon 'Halaga ng unang argumento: $ 1'
itinapon 'Pangalawang halaga ng argument: $ 2'
itinapon 'Pangatlong halaga ng argument: $ 3'

# Pagbasa ng mga halagang argumento gamit ang loop
para sapagtatalosa '[Protektado ang email]'
gawin
itinapon -n '$ pagtatalo'
tapos na

# Pagdaragdag ng mga halaga ng argument
kabuuan= $(($ 1+$ 2+$ 3))

# i-print ang resulta
itinapon -At ' nResulta ng kabuuan =$ sum'

Patakbuhin ang bash file na may tatlong mga halaga ng argumentong pang-numero.



$bashcmdline1.shlimampu 35 labinlimang





Halimbawa -2: Pagkuha ng filename bilang pagtatalo

Lumikha ng isang bash file at idagdag ang sumusunod na code upang mabilang ang kabuuang bilang ng mga character ng anumang file. Dito, ipapasa ang filename bilang argument ng linya ng utos.

#! / baseng / bash
filename=$ 1
totalchar='wc -c $ filename'
itinapon 'Kabuuang bilang ng mga character ay$ totalchar'

Patakbuhin ang bash script gamit ang filename bilang solong halaga ng argument at magpatakbo ng isa pang utos upang suriin ang kabuuang bilang ng mga character ng file na iyon. Dito, ang empleyado.txt file ay ginagamit bilang halaga ng argument. Kabuuang bilang ng mga character ng file ng empleyado.txt ay 204.



$bashcmdline2.sh empleyado.txt
$wc -cempleyado.txt

Paggamit ng getopts function:

Kung nais mong mag-imbak ng data sa database o anumang file o lumikha ng isang ulat sa partikular na format batay sa mga halaga ng mga argumento ng linya ng utos pagkatapos getopts Ang pagpapaandar ay ang pinakamahusay na pagpipilian upang gawin ang gawain. Ito ay isang built-in na pagpapaandar ng linux. Kaya, madali mong magagamit ang pagpapaandar na ito sa iyong script upang mabasa ang nai-format na data mula sa linya ng utos.

Halimbawa -1: Nagbabasa ng mga argumento sa pamamagitan ng pagpapaandar ng getopts

Lumikha ng isang bash file at idagdag ang sumusunod na script upang maunawaan ang paggamit ng getopts pagpapaandar Ginagamit ang pagpapaandar na 'getopts' kasama habang loop upang basahin ang mga pagpipilian sa argument ng linya ng utos at mga halaga ng argument. Dito, 4 na pagpipilian ang ginagamit kung alin 'I', 'n', 'm' at 'At' . ginamit ang pahayag ng kaso upang tumugma sa partikular na pagpipilian at maiimbak ang halaga ng argumento sa isang variable. Panghuli, i-print ang mga halaga ng variable.

#! / baseng / bash
habang getopts ':sa akin:'galit;gawin
kaso $ arg sa
ako) ID=$ OPTARG;;
n) Pangalan=$ OPTARG;;
m) Paggawa_date=$ OPTARG;;
At) Petsa na mawawalan ng bisa=$ OPTARG;;
esac
tapos na
itinapon -At ' n$ ID $ Pangalan $ Paggawa_date $ Expire_date n'

Patakbuhin ang file gamit ang mga sumusunod na pagpipilian at mga halaga ng argument. Dito, ang p100 ay ang halaga ng pagpipiliang -i, 'Hot Cake' ang halaga ng -n pagpipilian, '01 -01-2018 ′ ang halaga ng -m na pagpipilian at '06 -01-2018 ′ ang halaga ng - e pagpipilian.

$bashcmdline3.sh-akop001-n 'Hot Cake' -m '01 -01-2018 ' -At '06 -01-2018 '

Kapag kailangan mong magpadala ng mga simpleng halaga sa isang script kung gayon mas mahusay na gumamit ng mga variable ng argumento. Ngunit kung nais mong magpadala ng data sa isang naka-format na paraan kung gayon mas mahusay na gumamit ng pagpapaandar ng getopts upang makuha ang mga halaga ng argument. Para sa karagdagang impormasyon sa panonood ang video !