Синтаксичний аналіз і передача аргументів у сценарії bash/сценарії оболонки дуже схожі на спосіб, у який ми передаємо аргументи функціям у скриптах Bash. Ми побачимо фактичний процес передачі аргументів сценарію, а також розглянемо спосіб доступу до цих аргументів у сценарії.
Передача аргументів перед запуском
Ми можемо передати параметри відразу після назви сценарію під час виконання команди інтерпретатора bash. Ви можете передати файлу параметри або аргументи. Просто команда для нормального запуску сценарію шляхом додавання значення параметрів безпосередньо до сценарію. Кожен параметр є значенням, розділеним пробілом, яке передається в сценарій оболонки.
bash scriptname.sh>
Наведена вище команда просто запустить сценарій без передачі параметрів.
Тоді як наведена нижче команда передасть аргументи до сценарію.
bash scriptname.sh parameter1 parameter2 parameter3 nth-parameter>

Запуск сценарію bash із передачею параметрів
На наведеному вище знімку екрана показано параметри, передані сценарію, як ми це зробимо, що ми пояснимо в наступному розділі. Але зараз ми бачимо, що ми передали параметри поза сценарієм за допомогою змінних середовища bash. Ви навіть можете використовувати рядки та інші типи даних, але остерігайтеся будь-яких пробілів. Пробіл зробить змінну окремим параметром. Тому, особливо для рядків, будьте обережні, щоб суворо брати їх у лапки.
Виявлення аргументів командного рядка
Тепер ми побачимо, як отримати доступ до цих параметрів у сценарії. Ми будемо використовувати кількість параметрів, переданих у порядку, тобто для перших переданих параметрів ми аналізуватимемо параметр (доступ) за допомогою як змінної. Перший параметр зберігається в змінній . Крім того, ви можете призначити цю змінну будь-якій іншій змінній, визначеній користувачем. Для n-го переданого параметра ви можете використовувати $n для доступу до цього конкретного параметра. Тут ім’я змінної починається з 1, оскільки ім’я файлу/скрипту є нульовим параметром. Якщо у вас більше 9 параметрів, обов’язково використовуйте { } навколо числа, оскільки без дужок bash побачить лише як і виключить 0, тому використовуйте і так далі замість просто .
#!/bin/bash echo '1st parameter = ' echo '2nd Parameter = '>
Наведений вище сценарій може отримати доступ до параметрів із командного рядка/оболонки за допомогою позиційних параметрів, якими є 1, 2, 3 тощо.
метод tostring

Доступ до аргументів зі сценарію.
Як бачите, ми використали {} для доступу до змінних параметрів із числами від 10. Сценарій можна використовувати для циклів і циклів while для перебору параметрів, але ми обговоримо це в наступних розділах.
Призначте надані аргументи змінній Bash
Ми також можемо призначити його іншим користувацьким змінним, щоб зробити сценарій більш динамічним і формувати його відповідно до потреб. Хоча наведений вище сценарій під час виконання друкуватиме лише два параметри, звичайно, ви можете отримати доступ до більшої кількості параметрів, використовуючи змінну як порядок параметрів у числах. Сценарій може отримувати доступ до позиційних змінних із командного рядка та використовувати їх у необхідних місцях у сценарії.
#!/bin/bash a= b= p=$(($a*$b)) echo 'The product of $a and $b = $p'>

Призначте надані аргументи змінній Bash
Наведений вище сценарій отримує доступ до позиційних параметрів, тобто і , переданих у сценарій, і зберігає визначені користувачем змінні для доступу до них пізніше та відповідного їх зміни. Ми також можемо отримати доступ до більшої кількості параметрів за допомогою ітераційних методів, як ми побачимо в наступних розділах.
У нас також є можливість перевіряти будь-які NULL або порожні параметри, передані за допомогою прапорців -z або -n. З цього ми можемо перевірити, чи були передані параметри чи ні.
команда у вузлі js
#!/bin/bash if [[ -z ]]; then echo 'No parameter passed.' else echo 'Parameter passed = ' fi>

Перевірка переданих чи ні позиційних параметрів.
За допомогою цього сценарію ми можемо визначити, чи були передані будь-які позиційні параметри, чи не передано нічого. Прапор -z перевіряє будь-які NULL або неініціалізовані змінні в BASH. Прапор -z повертає істину, якщо передана змінна має значення NULL або неініціалізована. Отже, ми можемо використовувати базові оператори If-else для виявлення переданих параметрів.
Ми також можемо використовувати прапорець -n, який повертає істину, якщо параметри не передані, тому ми повинні використовувати ! змінити умову.
Такі як:
#!/bin/bash if [[ ! -n ]]; then echo 'No parameter passed.' else echo 'Parameter passed = ' fi>
Цей сценарій також дасть той самий вихід, але ми використовуємо прапорець -n замість -z.
Читання кількох аргументів за допомогою циклу For або While
Ми можемо використовувати змінну @ для доступу до кожного параметра, переданого сценарію через командний рядок. Це спеціальна змінна, яка містить масив змінних у BASH. У цьому випадку ми використовуємо його окремо, тому він містить масив переданих позиційних параметрів. Ми можемо використовувати його для повторення параметрів, переданих за допомогою циклів або циклу while.
#!/bin/bash for i in $@ do echo -e '$i ' done>

Використання циклів і змінної @ для доступу до параметрів як елементів масиву.
Ми використали цикл for на основі діапазону для повторення, доки в масиві @ не залишиться елементів. Ми просто повторюємо масив і друкуємо елемент. Ми можемо просто призначити його, змінити значення та внести необхідні зміни до параметрів і аргументів, щоб отримати бажаний результат від сценарію.
АБО
Ми також можемо надрукувати аргументи за допомогою циклу while і змінних середовища BASH.
базова смуга проти широкосмугової
#!/bin/bash i=$(($#-1)) while [ $i -ge 0 ]; do echo ${BASH_ARGV[$i]} i=$((i-1)) done> 
Використання циклу while для перебору переданих параметрів.
Ми використовуємо змінну ' # ‘ оскільки він містить кількість переданих параметрів. Ми ініціалізуємо кількість параметрів і забираємо один, оскільки збираємося використовувати масив для його повторення. Отже, як зазвичай, індекс масиву починається з 0. Оскільки цей масив ініціалізується з останнього переданого елемента або параметра, нам потрібно зменшити лічильник до 0, щоб вивести кожен параметр у порядку його передачі. Ми просто використовуємо масив BASH_ARGV для доступу до параметрів і друку їх значення. Крім того, на кожній ітерації ми зменшуємо значення i-ітератора або лічильника на одиницю за допомогою подвійних арифметичних дужок. З цього ми просто друкуємо кожен параметр, переданий у сценарій, використовуючи цикл while, як показано на знімку екрана.
Читання з іменами параметрів
Використання getopts для аналізу аргументів і параметрів
Ми можемо використовувати програму/команду getopts для аналізу аргументів, переданих сценарію в командному рядку/терміналі, за допомогою циклів і операторів зміни регістру.
#!/bin/bash while getopts n:c: option do case '${option}' in n)nation=${OPTARG};; c)code=${OPTARG};; esac done echo 'Nation : $nation' echo 'code : $code'> 
Використання getopts для аналізу аргументів і параметрів
Використовуючи getopts, ми можемо призначити позиційні аргументи/параметри з командного рядка напряму змінним bash. Це дозволяє нам правильно та систематично керувати параметрами. У наведеному вище сценарії ми використовували два аргументи для зберігання змінних bash за допомогою синтаксису getopts, циклів while і операторів switch-case.
порівнянний інтерфейс у java
Друк значень усіх аргументів
Ми можемо надрукувати аргументи, передані сценарію за допомогою простої потужної змінної «@», яка зберігає всі передані параметри.
#!/bin/bash echo 'The arguments passed in are : $@'>

Друк значень усіх аргументів
Доступ до кількості переданих параметрів
Ми також можемо використовувати змінну «#», щоб отримати доступ до кількості параметрів, переданих із командного рядка. Змінна # в основному містить кількість параметрів/аргументів, які передаються в сценарій.
#!/bin/bash echo 'The number of arguments passed in are : $#'>

Доступ до кількості переданих параметрів
Нижче наведено процес і специфікацію передачі та аналізу змінних у сценарії bash. Логіка перемикання та внесення змін до змінних знаходиться в руках користувача. Це була лише демонстрація передачі та аналізу аргументів із командного рядка до сценарію, щоб зробити їх більш динамічними.