Како да пренесем аргумент у бас -скрипти?

How Do I Pass Argument Bash Script



Већина корисника Линук Минт 20 корисника заглави се приликом преношења аргумента у басх скрипти. Аргументе можете пренети на било коју басх скрипту када се изврши. Постоји неколико једноставних и корисних начина за прослеђивање аргумената у басх скрипти. У овом водичу за чланак ћемо вас обавестити о неким врло лаким начинима преношења и коришћења аргумената у вашим басх скриптама.

Преношење аргумената помоћу подразумеваних променљивих:

Направите нову датотеку са било којим именом помоћу команде на додир, на пример, филе.сх.







$додирназив документа



Отворите ову новостворену датотеку и додајте јој басх скрипту. Додао сам неке подразумеване променљиве, нпр. Према томе, 1, 2 и 3 долара. Који год аргументи буду прослеђени кроз терминал биће ускладиштени у наведеним променљивим.







Морате покренути ову датотеку помоћу наредбе ./ након које слиједе неки аргументи. Као што можете видети на слици, када сам проследио аргументе, дошло је до грешке: Дозвола одбијена. То је зато што ова датотека нема права извршавања.

$./име датотеке аргумент1 аргумент2 аргумент

Дакле, за додељивање права извршења овој датотеци, користите наредбу судо цхмод.



$судо цхмод+к назив датотеке

Сада поново покрените датотеку користећи исту горњу наредбу. Овај пут сам изнео различите аргументе. Видећете да су недавно прослеђени аргументи ускладиштени у подразумеваним променљивим.

Преношење назива скрипте љуске као аргумент:

Сада, користећи исту стару датотеку филе.сх са малом променом подразумеваних променљивих. Морате додати променљиву $ 0 у скрипту као што је приказано.

Приликом покретања исте наредбе ./ схелл сцрипт, назив ваше скрипте љуске, нпр. ./име датотеке ће бити ускладиштено у променљивој $ 0 као аргумент.

Преношење аргумената као низа променљивој:

Почевши од исте датотеке филе.сх, морате додати неке додатне ретке у стару скрипту. Прогласите променљиву именом арраи. Додајте подразумевану променљиву [заштићена е -поштом] која ће чувати аргументе које је корисник унео као низ. Ови аргументи ће бити рашчлањени на променљиви низ. Последњи ред ће приказати све аргументе низа променљивих сортираних према броју индекса.

Извршите ./ схелл скрипту. Видећете да ће приказати аргументе или вредности ускладиштене као низ у [емаил протецтед] рашчлањеном на променљиви низ, али не и име скрипте љуске у другој наредби ецхо. Имаћете следећи излаз.

$./име датотеке аргумент1 аргумент2 аргумент

Користите исту датотеку са истим скриптом. Само уклоните $ {арраи [3]} из последњег реда као што је јасно на слици.

Након извршавања наредбе ./, видећете сличан излаз који сте добили у горњем примеру без промене.

Исти резултат можете добити и заменом последње линије басх скрипте једном речју. Морате само да додате [емаил протецтед] у ецхо исказ и он ће приказати аргументе присутне у овом низу променљивих.

Ако поново покренете команду ./, добићете исте резултате.

Проверите укупан број аргумената који су прослеђени:

Напротив, ако желите да знате укупан број аргумената које је прошао корисник, то можете и да урадите. У ту сврху морате само да замените [емаил протецтед] са $# у ецхо -у.

Поново извршавајући ./ команду, сада ћете видети читав низ аргумената прослеђених скрипти. У нашем случају, 3 аргумента се преносе као вредност.

Креирајте ред по линију излазних аргумената:

Креирајте нову датотеку тест.сх у матичном директоријуму. Додајте басх скрипту као што је приказано.

Сада покрените исту стару команду са различитим аргументима. Прво ћете видети грешку: Дозвола одбијена.

Морате извршити наредбу цхмод да бисте овој датотеци додијелили судо привилегије. Након тога поново покрените наредбу ./ схелл сцрипт. И добићете ред по ред сортиране резултате аргумената.

Ограничите променљиву помоћу броја индекса аргумената:

Ако желите да ограничите променљиву користећи њен индексни број, то можете учинити врло лако. Додајте увијене заграде иза знака $ и додајте број индекса аргумената који желите да прикажете пре осталих аргумената.

Ако су аргументи које су дали корисници мањи од броја индекса наведеног у граничној променљивој, добићете празну вредност аргумента. На пример, навео сам 4 аргумента, али сам дао вредност аргумента 05 за приказ. У овој ситуацији, променљива ће бити приказана празна јер пети аргумент није прослеђен.

Али када прођете једнак или већи број аргумената у команди, добићете вредност приказану у резултату као што је приказано.

Проверавање аргумената о одређеној вредности:

Направите нову датотеку са именом Цхецк.сх у свом кућном директоријуму. Додајте исту басх скрипту као што је приказано на слици испод. У овој скрипти имамо променљиву вар за складиштење вредности аргумента коју је проследио корисник. Затим имамо наредбу иф, која ће проверити да ли се вредност аргумента подудара или не. Ако се вредност аргумента подудара са вредношћу наведеном у заградама, тада ће се извршити прва наредба ецхо. Ако се вредност не подудара, извршиће се друга наредба ецхо.

Када покренемо наредбу схелл сцрипт, она ће изазвати грешку. Помоћу наредбе цхмод можемо исправити ову грешку.

Након тога извршите схелл скрипту за одређену датотеку са неком вредношћу аргумента. У нашем случају, обезбедили смо Акса као вредност аргумента, која је иста као вредност приказана у заградама. Тако ће басх скрипта извршити прву наредбу ецхо као што је приказано.

С друге стране, ако наведете различите вредности аргумента у скрипти љуске, она ће приказати другу наредбу ецхо. Овде сам додао Римсха као вредност аргумента, која се разликује од вредности наведене у иф наредби. Тако ће басх скрипта извршити другу наредбу ецхо.

Закључак:

Надам се да вам је овај водич довољно помогао да се снажно ухватите у обзир како проследити аргументе подразумеваним променљивим, пренети вредност аргумента као низ у променљиву, добити укупан број прослеђених аргумената, излаз аргумената по ред, ограничити аргумент излаз помоћу индексног броја, провера аргумента одређене вредности и још много тога.