从给定索引访问传递给 shell 脚本的所有变量

从给定索引访问传递给 shell 脚本的所有变量

我如何才能从第三个开始访问其中的值$@?现在我将它们从三传递到九,但我认为有更好的方法:

while getopts ":n" opt "$3 $4 $5 $6 $7 $8 $9"; do

答案1

对我来说这似乎是一种古怪的争论方式,但是:

[kbrandt@kbrandt: ~/scrap] cat args
args=("$@")
echo ${args[0]}
echo ${args[@]:1:2}
echo ${args[@]:0:$#}
[kbrandt@kbrandt: ~/scrap] bash args foo bar baz biz
foo
bar baz
foo bar baz biz

我建议你看看常见问题答案关于命令行参数(基本上是 getopts 或 loop/case/shift)。

答案2

我假设您在这种情况下使用的是 bash?

如果是这样,你应该使用转移

一个例子:

shift.sh的内容:

#!/bin/bash
shift 3
echo $*

结果:

graeme@graeme:~$ ./shift.sh one two three four five six
four five six

相关内容