【问题标题】:collecting all options in shell收集 shell 中的所有选项
【发布时间】:2014-01-11 02:55:25
【问题描述】:

我正在尝试转发收集到的所有选项,以便在 shell 脚本中的另一个命令中使用。

例如,如果脚本运行如下:

./master -o -t -k Arg1

在主人

  1. getopts 为 .:o.:t.:k.:r(当前运行中未使用 r)
  2. 运行另一个脚本,所有用于的选项都应用于内部脚本
./slave -o -t -k Arg2

我希望使用所有 (-o -t -k) 或任何其他选项组合条目 - 我该怎么做?

【问题讨论】:

  • 如果您只想将收到的所有选项传递给从站,那么 ./slave $@ 就可以了。
  • @user3088572:如果您要使用$@ 表示法的变体,请确保使用"$@" 在参数中保留空格。
  • 你认为选项字符串中的点有什么作用? Bash manual 中没有提及它们。如果不是特殊含义,则-o-t-k-r 都不接受参数,但如果在命令行中使用-. something,则something 是强制性的(而且您多次说.:这一事实无关紧要;第一次就足够了。

标签: linux shell getopts


【解决方案1】:

你可以./slave ${*/Arg1/Arg2}。这会将所有参数从master 发送到slave,在将Arg1 替换为Arg2 之后。好消息是$* 将您的所有输入评估为一个字符串(与$@ 不同),允许进行简单的替换。

【讨论】:

  • 请参阅 Jonathan Leffler 的评论,但要保留空格。 "$@" 将保留空格。 $* 不会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 2020-04-30
相关资源
最近更新 更多