Использование команды Shift в Linux
Это перевод оригинальной статьи Use of shift command in Linux.
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Команда shift в Linux — это встроенная команда используемая в shell-скриптах для управления позиционными параметрами (аргументами, переданными скрипту или функции). Она сдвигает позиционные параметры влево, фактически переназначая их: первый параметр ($1) отбрасывается, а оставшиеся параметры ($2, $3 и т. д.) сдвигаются на одну позицию вниз. Это полезно для итеративной обработки аргументов командной строки.
shift [n]
- Позиционные параметры — это переменные, такие как $1, $2, $3 и т. д., представляющие аргументы, передаваемые скрипту или функции.
- Команда
shiftпереименовывает эти параметры:
- Общее количество параметров (
$#) уменьшается на число выполненных сдвигов. $0(имя скрипта или функции) остается без изменений.
#!/bin/bash echo "First argument: $1" shift echo "New first argument: $1"
Если вы запустите ./script.sh apple banana orange:
First argument: apple New first argument: banana
2. Сдвиг с указанием количества позиций
#!/bin/bash echo "All arguments: $@" shift 2 echo "After shifting 2 positions: $@"
Если вы запустите ./script.sh one two three four:
All arguments: one two three four After shifting 2 positions: three four
#!/bin/bash
while [ $# -gt 0 ]; do
echo "Processing argument: $1"
shift
doneЕсли вы запустите ./script.sh cat dog bird:
Processing argument: cat Processing argument: dog Processing argument: bird
- Пояснение: Команда
shiftиспользуется для последовательной обработки каждого аргумента до тех пор, пока аргументы не закончатся (когда$#становится равным 0).
4. Обработка параметров со значениями
#!/bin/bash
while [ $# -gt 0 ]; do
case "$1" in
-n)
shift
name="$1"
echo "Name is: $name"
;;
*)
echo "Unknown option: $1"
;;
esac
shift
doneЕсли вы запустите ./script.sh -n Alice bob:
Name is: Alice Unknown option: bob
- Пояснение: Команда
shiftиспользуется для доступа к значению (Alice), следующему после опции-n, сдвига за пределы флага опции.
Типичные сценарии использования
- Анализ аргументов командной строки: параметры обработки и их значения в скриптах (например,
-f filename). - Итерация по аргументам: обработка переменного числа аргументов в цикле.
- Упрощение скриптов: позволяет избежать ручного отслеживания индексов аргументов.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.