Как да прехвърля аргумент в Bash скрипт?

How Do I Pass Argument Bash Script



Повечето потребители на Linux Mint 20 се забиват, когато предават аргумент в bash скрипт. Можете да предадете аргументите на всеки bash скрипт, когато се изпълнява. Има няколко прости и полезни начина за предаване на аргументи в bash скрипт. В това ръководство за статия ще ви уведомим за някои много лесни начини за предаване и използване на аргументи във вашите bash скриптове.

Предаване на аргументи с помощта на променливи по подразбиране:

Създайте нов файл с произволно име с помощта на командата за докосване, например file.sh.







$докосванеиме на файл



Отворете този новосъздаден файл и добавете към него някакъв bash скрипт. Добавих някои променливи по подразбиране, напр. Следователно $ 1, $ 2 и $ 3. Всички аргументи, които ще бъдат предадени през терминала, ще се съхраняват в посочените променливи.







Трябва да стартирате този файл, като използвате командата ./, последвана от някои аргументи. Както можете да видите на снимката, че когато предадох аргументите, възниква грешка: Разрешението е отказано. Това е така, защото този файл няма права за изпълнение.

$./аргумент име на файл1 аргумент2 аргумент

Така че, за да предоставите права за изпълнение на този файл, използвайте командата sudo chmod, за да го направите.



$sudo chmod+x име на файл

Сега отново стартирайте файла, като използвате същата команда по -горе. Този път съм дал различни аргументи. Ще видите, че новопредадените аргументи се съхраняват в променливите по подразбиране.

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

Сега, използвайки същия стар файл file.sh с малка промяна в променливите по подразбиране. Трябва да добавите променливата $ 0 в скрипта, както е показано.

При изпълнение на същата команда ./ shell script, името на вашия скрипт на обвивката, напр. ./filename ще се съхранява в променливата $ 0 като аргумент.

Предаване на аргументи като масив към променлива:

Започвайки със същия файл file.sh, трябва да добавите някои допълнителни редове в стария скрипт. Декларирайте променлива с име array. Добавете променлива по подразбиране [email protected], която ще съхранява въведените от потребителя аргументи като масив. Тези аргументи ще бъдат анализирани в променлив масив. Последният ред ще покаже всички аргументи на променливия масив, сортиран по номера на индекса.

Изпълнете скрипта ./ shell. Ще видите, че той ще показва аргументите или стойностите, съхранявани като масив в [email protected], анализиран към променлив масив, но не и името на скрипта на черупката във втория ехо израз. Ще имате следния изход.

$./аргумент име на файл1 аргумент2 аргумент

Използвайте същия файл със същия скрипт. Просто премахнете $ {array [3]} от последния ред, както е ясно на снимката.

След като изпълните командата ./, ще видите подобен изход, както в горния пример, без промяна.

Можете също да получите същия резултат, като замените последния ред на bash скрипта с една -единствена дума. Трябва само да добавите [email protected] в echo оператора и той ще покаже аргументите, присъстващи в този променлив масив.

Така че, като изпълните отново командата ./, ще получите същите резултати.

Проверете общия брой приети аргументи:

Напротив, ако искате да знаете общия брой аргументи, предадени от потребителя, можете също да направите това. За тази цел просто трябва да замените [email protected] с $# в echo.

Отново изпълнявайки командата ./, сега ще видите цялата фигура от аргументи, предадени на скрипта. В нашия случай 3 аргумента се предават като стойност.

Създайте ред по ред изход на аргументи:

Създайте нов файл test.sh в домашната директория. Добавете bash скрипта, както е показано.

Сега изпълнете същата стара команда с различни аргументи. Първо ще видите грешката: Разрешението е отказано.

Трябва да изпълните командата chmod, за да предоставите на файла sudo привилегии. След това стартирайте отново командата ./ shell script. И ще получите ред по ред сортиран изход на аргументи.

Ограничете променливата чрез индексния номер на аргумента:

Ако искате да ограничите променливата с помощта на нейния индексен номер, можете да го направите много лесно. Добавете къдрави скоби след знака $ и добавете номера на индекса на аргумента, който искате да покажете преди други аргументи.

Ако аргументите, предоставени от потребителите, са по -малки от индексния номер, предоставен в граничната променлива, тогава ще получите празна стойност на аргумента. Като пример съм предоставил 4 аргумента, но съм дал стойността на аргумента 05 за показване. В тази ситуация променливата ще се покаже празна, защото петият аргумент не е предаден.

Но когато предадете равен или по -голям брой аргументи в командата, ще получите стойността, показана в резултата, както е показано.

Проверка на аргументи за специфична стойност:

Направете нов файл с името Check.sh в домашната си директория. Добавете същия bash скрипт, както е показано на изображението по -долу. В този скрипт имаме променлива var за съхраняване на стойността на аргумента, предадена от потребителя. След това имаме оператор if, който ще провери дали стойността на аргумента е съвпаднала или не. Ако стойността на аргумента е съпоставена със стойността, предоставена в скобите, тогава първият оператор echo ще бъде изпълнен. Ако стойността не съвпада, ще се изпълни вторият ехо израз.

Когато изпълним командата на скрипта на черупката, тя ще покаже грешка. С помощта на командата chmod можем да коригираме тази грешка.

След това изпълнете скрипта на обвивката за конкретния файл с някаква стойност на аргумент. В нашия случай сме предоставили Aqsa като стойност на аргумент, която е същата като стойността, показана в скобите. Така че скриптът bash ще изпълни първия ехо израз, както е показано.

От друга страна, ако предоставите различните стойности на аргумента в скрипта на обвивката, той ще покаже другия ехо израз. Тук добавих Римша като стойност на аргумент, която е различна от стойността, предоставена в израза if. Така че bash скриптът ще изпълни втория ехо израз.

Заключение:

Надявам се, че това ръководство ви е помогнало достатъчно, за да разберете как да предавате аргументи на променливите по подразбиране, да предавате стойността на аргумента като масив на променлива, да получите общия брой предадени аргументи, ред по ред извеждане на аргументи, да ограничите аргумента изход, използващ индексния номер, проверка на аргумент за конкретна стойност и много други.