【问题标题】:Operating on pairs of (first+subsequent) arguments [duplicate]对(第一个+后续)参数对进行操作[重复]
【发布时间】:2017-08-31 01:46:23
【问题描述】:

我有一个脚本,它的第一个参数是一个对象的标识符,每个后续参数都将与之进行比较。

我知道如何使用$1$2 等来引用单个参数,但我如何存储第一个参数的值,然后循环遍历所有第一个参数?

【问题讨论】:

  • 无论您的脚本包含什么其他内容,shebang 必须是脚本中的第一行才能生效。
  • 感谢您的提示,当然必须如此。我不小心把它放到了代码行中。
  • 嗯? exec 是一个用正在运行的命令替换 shell 的内置命令。如果成功,之后将不会在同一个 shell 中运行任何内容(因为该 shell 将不再在内存中)。

标签: linux bash shell


【解决方案1】:

答案是对Iterate through parameters skipping the first 的简单扩展(唯一的区别是需要在丢弃第一个参数之前存储它)。

使用shift 从列表中弹出一个参数,以便您可以迭代其余部分。因此:

#!/usr/bin/env bash
first=$1; shift || exit
for arg; do
  echo "Using first argument $first with additional argument $arg"
done

如果您使用./theScript argA argB argC 运行此脚本,您将获得以下输出:

Using first argument argA with additional argument argB
Using first argument argA with additional argument argC

...据我所知,这就是您要求的行为。

【讨论】:

  • 非常感谢!这正是我想知道的。
  • 介意我尝试编辑问题以更清楚地询问这是答案的问题吗?我必须做出一些直觉上的飞跃才能到达这里。 :)
  • 当然不是,请随意,谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-07
  • 2018-12-14
  • 1970-01-01
相关资源
最近更新 更多