Как да се справим с аргументите на командния ред в Bash скрипт

How Handle Command Line Arguments Bash Script



В много случаи bash скриптовете изискват стойности на аргументи, за да предоставят опции за въвеждане на скрипта. Можете да управлявате аргументите на командния ред в bash скрипт по два начина. Единият е чрез използване аргументи променливи а друг е чрез използване getopts функция. Как можете да се справите с аргументите на командния ред е показано в този урок.

Използване на променливи на аргументи:

Аргументната променлива започва от $ 0. Името на основния скриптов файл се съхранява в $ 0, което получава стойности на аргументи от аргументи на командния ред. Ако два аргумента бъдат предадени в командния ред, стойностите на аргументите ще бъдат получени последователно в променливи $ 1 и $ 2.







Пример -1: Изпращане на три числови стойности като аргументи

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



#!/bin/bash

# Преброяване на общия брой аргументи
изхвърлен 'Общ брой аргументи: $#'

# Четене на стойностите на аргументите поотделно
изхвърлен 'Стойност на първия аргумент: $ 1'
изхвърлен 'Втора стойност на аргумента: $ 2'
изхвърлен „Трета стойност на аргумента: $ 3“

# Четене на стойности на аргументи с помощта на цикъл
заargvalв '[защитен имейл]'
направете
изхвърлен '$ argval'
Свършен

# Добавяне на стойности на аргументи
сума= $(($ 1+$ 2+$ 3))

# отпечатайте резултата
изхвърлен 'нРезултат от сумата =$ сума'

Стартирайте файла bash с три числови стойности на аргументи.



$башcmdline1.shпетдесет 35 петнадесет





Пример -2: Приемане на името на файла като аргумент

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

#!/bin/bash
име на файл=$ 1
totalchar=тоалетна -° С $ име на файл
изхвърлен „Общият брой знаци е$ totalchar'

Стартирайте bash скрипта с името на файла като стойност на един аргумент и изпълнете друга команда, за да проверите общия брой знаци на този файл. Тук файлът Employer.txt се използва като стойност на аргумента. Общият брой знаци на файла Employer.txt е 204.



$башcmdline2.sh служител.txt
$тоалетна -° Сслужител.txt

Използване на функцията getopts:

Ако искате да съхранявате данни в база данни или който и да е файл или да създадете отчет за конкретен формат въз основа на стойностите на аргументите на командния ред, тогава getopts функция е най -добрият вариант за изпълнение на задачата. Това е вградена linux функция. Така че можете лесно да използвате тази функция в скрипта си, за да четете форматирани данни от командния ред.

Пример -1: Четене на аргументи от функция getopts

Създайте bash файл и добавете следния скрипт, за да разберете използването на getopts функция. Функцията „getopts“ се използва с цикъл while за четене на опциите за аргументи от командния ред и стойностите на аргументите. Тук се използват 4 опции, които са ‘I’, ‘n’, ‘m’ и 'И' . case се използва за съвпадение на конкретната опция и съхранява стойността на аргумента в променлива. Накрая отпечатайте стойностите на променливата.

#!/bin/bash
докато getopts ':в мен:'ядосан;направете
случай $ arg в
i) документ за самоличност=$ OPTARG;;
н) Име=$ OPTARG;;
м) Дата на производство=$ OPTARG;;
И) Краен срок=$ OPTARG;;
esac
Свършен
изхвърлен 'н$ ID $ Име $ Manufacturing_date $ Expire_dateн'

Стартирайте файла със следните опции и стойности на аргументи. Тук p100 е стойността на опцията -i, 'Hot Cake' е стойността на опцията -n, '01 -01-2018 ′ е стойността на опцията -m и '06 -01-2018 'е стойността на - e опция.

$башcmdline3.shp001 'Гореща торта' '01 -01-2018 ' '06 -01-2018 '

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