如何跳过$ @中的第一个参数?

时间:2012-01-18 06:41:26

标签: bash shell

我的代码:

#!/bin/bash

for i in $@;
    do echo $i;
done;

运行脚本:

# ./script 1 2 3

1
2
3

所以,我想跳过第一个参数并得到:

# ./script 1 2 3

2
3

4 个答案:

答案 0 :(得分:32)

使用偏移参数展开

#!/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

答案 1 :(得分:17)

使用shift命令。 (抱歉,无法发布代码,现在没有bash访问权限。)

FIRST_ARG="$1"
shift
REST_ARGS="$@"

答案 2 :(得分:2)

查看bash联机帮助页中的参数扩展

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

答案 3 :(得分:1)

你可以让变量测试它是否是第一个带有这样的东西的参数(未经测试):

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