Как пропустить первый аргумент в [email protected]?

Мой код:

#!/bin/bash

for i in [email protected];
    do echo $i;
done;

запустить script:

# ./script 1 2 3

1
2
3

Итак, я хочу пропустить первый аргумент и получить:

# ./script 1 2 3

2
3

Ответы

Ответ 1

Используйте расширение параметра смещения

#!/bin/bash

for i in "${@:2}"; do
    echo $i
done

Пример

$ func(){ for i in "${@:2}"; do echo "$i"; done;}; func one two three
two
three

Ответ 3

Посмотрите Развертывание параметров в man-странице bash.

#/bin/bash
for i in "${@:2}"
    do echo $i
done

Ответ 4

У вас может быть просто переменная, проверяющая, является ли это первым аргументом с чем-то вроде этого (untested):

#!/bin/bash
FIRST=1
for i in [email protected]
do
    if [ FIRST -eq 1 ]
    then
        FIRST=0
    else
        echo $i
    fi
done