BASH在没有循环的情况下在命令行中访问下一个“字段”

时间:2012-04-15 00:06:57

标签: bash command-line-arguments field

这可能看起来像一个愚蠢的问题,但我看起来很高和很低的解决方案,并没有拿出一个。我有一个接受一些参数的脚本,我只想知道如何有一个参数并访问下一个立即参数。我试过像$i+1这样的东西但没有用。下一个参数将最终保存目标目录,因此我需要能够访问内容。还要注意我通过在循环中迭代的计数器变量得到参数位置,这就是为什么我不能简单地说$2或其他东西。我为这样一个平凡的问题道歉。

3 个答案:

答案 0 :(得分:4)

$ bash -c 'foo=1 ; echo ${@:$((foo+2)):1}' a b c d e f g
d

答案 1 :(得分:2)

如果i是包含整数的变量,并且您想要(i + 1)st参数,则可以执行以下操作:

eval arg=\$$(( i + 1 ))

现在arg包含你想要的参数

答案 2 :(得分:0)

它可能不适用于您的情况,但如果您按顺序访问参数,则可以使用内置的shift命令来转换参数。

在没有参数的情况下执行shift会将$1设置为$2,将$2设置为$3,依此类推,放弃$1的旧值}。给shift提供一个数字参数会改变这么多步骤。