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

логотип

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

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

shift – отримання доступу до багатьох аргументів

Але що станеться, якщо ми даємо програмі велику кількість аргументів, наприклад:


зображення

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


Кількість аргументів: 82

$0 = /home/me/bin/posit-param

$1 = адреси.ldif

2 долари = ящик

$3 = bookmarks.html

$4 = debian-500-i386-netinst.iso

$5 = debian-500-i386-netinst.jigdo

$6 = debian-500-i386-netinst.template

$7 = debian-cd_info.tar.gz


8 доларів = робочий стіл

$9 = dirlist-bin.txt

8 доларів = робочий стіл

$9 = dirlist-bin.txt


У цьому прикладі системи підстановка * розширюється на 82 аргументи. Як ми можемо обробити таку кількість? Оболонка надає спосіб, хоча і незграбний, щоб зробити це. The зсув Команда змушує всі параметри «переміщатися на один раз вниз» щоразу, коли вона виконується. Фактично, використовуючи зсув, можна обійтися лише одним параметром (на додаток до $0, який ніколи не змінюється):



#! / бін / баш


# posit-param2: скрипт для відображення всіх аргументів count=1

в той час як [[ $# -gt 0 ]]; робити

echo "Аргумент $count = $1" count=$((лічильник + 1))

зміна виконана

#! / бін / баш


# posit-param2: скрипт для відображення всіх аргументів count=1

в той час як [[ $# -gt 0 ]]; робити

echo "Аргумент $count = $1" count=$((лічильник + 1))

зміна виконана


Щоразу зсув виконується, значення $2 переміщено до $1, значення $3 переміщено до $2 і так далі. Значення $# також зменшується на одиницю.

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

$1 з наступним аргументом. Ось програма на роботі:


[me@linuxbox ~]$ posit-param2 abcd

Аргумент 1 = a Аргумент 2 = b Аргумент 3 = c Аргумент 4 = d

[me@linuxbox ~]$ posit-param2 abcd

Аргумент 1 = a Аргумент 2 = b Аргумент 3 = c Аргумент 4 = d


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