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

rseugnpd  于 2023-03-30  发布在  Shell
关注(0)|答案(4)|浏览(269)

我的代码:

#!/bin/bash

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

运行脚本:

# ./script 1 2 3

1
2
3

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

# ./script 1 2 3

2
3
r6hnlfcb

r6hnlfcb1#

使用偏移参数展开

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

7y4bm7vi2#

使用shift命令:

#!/bin/bash
FIRST_ARG="$1"
shift
for i in "$@";
    do echo $i;
done;

它跳过了第一个参数:

# ./script 1 2 3
2
3
nqwrtyyt

nqwrtyyt3#

查看bash手册页中的参数扩展

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

q9yhzks04#

你可以用一个变量来测试它是否是第一个参数,类似这样(未经测试):

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

相关问题