Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

Обробка параметрів позиції Масово

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

Для цієї мети оболонка надає два спеціальні параметри. Обидва вони розширюються на повний список позиційних параметрів, але відрізняються досить тонкими способами. Вони є:


Таблиця 32-1: Спеціальні параметри * І @


Опис параметра

Опис параметра

$* Розгортається до списку позиційних параметрів, починаючи з 1. Коли його оточують подвійними лапками, він розгортається в рядок у подвійних лапках, що містить усі параметри позиції, кожен із яких відокремлюється першим символом змінної оболонки IFS (за замовчуванням пробіл характер).


зображення

$@ Розгортається до списку позиційних параметрів, починаючи з 1. У подвійних лапках він розгортає кожен позиційний параметр в окреме слово, оточене подвійними лапками.


зображення


Ось скрипт, який показує ці спеціальні параметри в дії:

Масова обробка позиційних параметрів


#! / бін / баш

# posit-params3: скрипт для демонстрації $* і $@ print_params () {

echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4"

}


pass_params () {

echo -e "\n" '$* :'; print_params $* echo -e "\n" '"$*" :'; print_params "$*" echo -e "\n" '$@ :'; print_params $@ echo -e "\n" '"$@" :'; print_params "$@"

}


pass_params "слово" "слова з пробілами"

#! / бін / баш

# posit-params3: скрипт для демонстрації $* і $@ print_params () {

echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4"

}


pass_params () {

echo -e "\n" '$* :'; print_params $* echo -e "\n" '"$*" :'; print_params "$*" echo -e "\n" '$@ :'; print_params $@ echo -e "\n" '"$@" :'; print_params "$@"

}


pass_params "слово" "слова з пробілами"


У цій досить заплутаній програмі ми створюємо два аргументи: «слово» і «слова з пробілами» і передаємо їх до pass_params функція. Ця функція, у свою чергу, передає їх до параметри друку функцію, використовуючи кожен із чотирьох доступних методів зі спеціальними параметрами $* та $@. Після виконання сценарій виявляє відмінності:


зображення

[me@linuxbox ~]$ позиційний параметр3


$*:


$1

=

слово

$2

=

слова

$3

=

з

$4

=

пробіли

"$*":


$1

=

слова слова з пробілами

$2

=

$3

=

$4

=

$@ :


$1

=

слово

$2

=

слова

$3

=

з

$4

=

пробіли

"$@":

$1 = слово


$2 = слова з пробілами

3 доларів США =

4 доларів США =

$2 = слова з пробілами

3 доларів США =

4 доларів США =


З нашими аргументами, обидва $* та $@ створити результат із чотирьох слів:

слова слова з пробілами

"$*" дає результат із одного слова:

«слова з пробілами»

"$@" дає результат із двох слів:

"слово" "слова з пробілами"

що відповідає нашим реальним намірам. Урок, який слід винести з цього, полягає в тому, що, незважаючи на те, що оболонка надає чотири різні способи отримання списку позиційних параметрів, "$@", безумовно, найкорисніший для більшості ситуацій, оскільки він зберігає цілісність кожного параметра позиції.


Найпопулярніші хмарні обчислення ОС на OnWorks: