В Linux използваме аргументи от командния ред като вход за bash скрипта. Bash може да вземе тези аргументи от командния ред последователно и да ги анализира като опция. Тези аргументи ви позволяват да повлияете динамично на действията и изхода на скрипта.
Можете да конфигурирате тези аргументи по различен начин, за да повлияете на входа и изхода. Ето защо работата с аргументи на командния ред в bash е от съществено значение, но много нови потребители трябва да се научат как да го правят. Така че в това ръководство ще обясним различни начини за обработка на аргументи от командния ред в bash.
Как да обработвам аргументите на командния ред в Bash?
Има различни начини за обработка на аргументи от командния ред в Bash, така че нека ги разгледаме, за да получим кратка информация:
Функцията getopt
Функцията getopt е удобна, тъй като предоставя опциите и синтаксиса за дефиниране и анализиране на аргументи в bash. Това е вградена функция на Linux, която можете да използвате, докато създавате файл с база данни или отчет в специфичен формат въз основа на аргументите. Функцията getopt помага за анализиране на кратките аргументи на командния ред, тъй като има два типа аргументи:
- Кратки аргументи: Това са аргументите от един знак, последвани от тире. Например -a, -l, -h и т.н. са няколко примера за единични аргументи.
- Дълги аргументи: Това са многосимволните аргументи, последвани от двойно тире. Има различни примери за дълги аргументи, като –all, –list, –help и др.
Нека вземем пример, при който ще обработваме аргументите на командния ред с помощта на помощната програма getopt. Създадохме bash скрипт с име “getopt.sh”, който съдържа следната информация:
!/ кошче / баш
докато getopts 'A:B:C:D:' подробности; направи
случай ' $подробности ' в
А )
ехо „Името на гражданина е $OPTARG ' ;;
б )
ехо „Citizen ID е $OPTARG ' ;;
° С )
ехо „Родното място е $OPTARG ' ;;
д )
ехо „Професията е $OPTARG ' ;;
* )
изход 1 ;;
esac
Свършен
смяна ' $(($OPTING -1) )'
ако [ ! -С $1 ] ; тогава
ехо „Семейно положение $1“
друго
ехо „Без записи“
изход 1
бъда
ако [ ! -С $2 ] ; тогава
ехо „Членове на семейството $2“
бъда
Сега нека изпълним скрипта с необходимите аргументи във входа:
Както можете да видите на изображението по-горе, изпълняваме скрипта само с функции getopt и след това добавяме нормални аргументи, за да получим пълния резултат.
Използване на знамена
Флаговете не са нищо друго освен единични знаци, предшествани от тирета (-). Когато предаваме аргументите с помощта на функцията getopt, използваме флагове. -a, -b, -c са някои примери за флагове. Например скриптът изисква име, лична карта, място, възраст и професия на гражданин. Следователно използвахме знамена j, k, l, m, n, за да дефинираме едновременно името, личната карта, мястото, възрастта и професията на гражданина:
#!/bin/bashДокато getopts j:k:l:m:n: информация за флаг
направи
случай ' ${flag_info} ' в
< ол >
< че > й ) гражданско име = ${OPTARG} ;; че >
< че > к ) гражданин = ${OPTARG} ;; че >
< че > л ) място = ${OPTARG} ;; че >
< че > м ) възраст = ${OPTARG} ;; че >
< че > н ) професия = ${OPTARG} ;; че >
ол >
esac
Свършен
ехо „Ето въведените данни:“
ехо „Гражданско име: $citizenname ' ;
ехо „Гражданска лична карта: $citizenid ' ;
ехо „Място: $ място ' ;
ехо „Възраст: $възраст ' ;
ехо 'Професия: $окупация ' ;
Скриптът ще даде следния резултат в терминала:
. /< сценарий > .sh -j Дани -к 476 -л Торонто -м 25 -н Автор
Използвайки [имейл защитен] С примки
„ [имейл защитен] ” променливата не е нищо друго освен масив от всички входни аргументи. Можем да подадем произволен брой входове, използвайки „ [имейл защитен] ” променлива. Можете да използвате тази променлива като цикъл за итериране на аргументите. „ [имейл защитен] ” променливата е полезна тогава; не знаете размера на входа и не можете да приемете позиционните аргументи. Следователно можете да използвате „ [имейл защитен] ” вместо да дефинирате функцията getopt отново и отново. Ето пример за използване на цикли и [имейл защитен] заедно в скрипт:
#!/bin/bashникой = ( „$ @ ” )
ако [ $# -gt 1 ]
тогава
добавете =$ ( ( ${num[0]} + ${num[1]} ) )
ехо „Събирането на всички числа е: $добавете '
изваждане =$ ( ( ${num[0]} - ${num[1]} - ${num[2]} ) )
ехо „Изваждането на числата е: $ изваждане '
умножават се =$ ( ( ${num[0]} * ${num[1]} * ${num[2]} ) )
ехо „Умножението на числата е: $умножете '
дивизия1 =$ ( ( ${num[0]} / ${num[1]} ) )
ехо „Разделение на ${num[0]} и ${num[1]} е: $разделение1 '
дивизия2 =$ ( ( ${num[1]} / ${num[2]} ) )
ехо „Разделение на ${num[1]} и ${num[2]} е: $разделение2 '
дивизия3 =$ ( ( ${num[0]} / ${num[2]} ) )
ехо „Разделение на ${num[0]} и ${num[2]} е: $разделение2 '
бъда
Горният скрипт извършва различни аритметични изчисления въз основа на аргументите на командния ред. Например въведохме 50, 35 и 15 като вход:
Използване на позиционни параметри
Можете да получите достъп до позиционните параметри, тъй като те първо имат достъп до $1, след това до $2 и т.н. Например, нека създадем скрипт, който чете име като първи аргумент и след това град като втори. Въпреки това, ако преминете първо града и след това името, тогава той счита името за град и обратно. Нека се потопим по-задълбочено в следния скрипт, за да разберем тази концепция:
#!/bin/bashехо „Ето въведените данни“
ехо 'име $1'
ехо 'град $2'
Трябва да добавите името и града по време на изпълнение на скрипта в терминала:
Обобщавайки
Това е всичко, което трябва да знаете за методите за обработка на аргументи на командния ред в bash. Обяснили сме различни подходи, които можете да опитате с подходящите примери. Има различни команди, ако искате да добавите аргументи в скрипта. Така че не забравяйте да посетите Linuxhint, за да научите повече за тях.