【问题标题】:How to handle more than 10 parameters in shell如何在shell中处理10多个参数
【发布时间】:2011-06-22 05:09:06
【问题描述】:

我在 linux 上使用 bash shell,想在 shell 脚本中使用超过 10 个参数

【问题讨论】:

标签: linux bash shell parameters


【解决方案1】:

使用花括号来设置它们:

echo "${10}"

您还可以像这样迭代位置参数:

for arg

for arg in "$@"

while (( $# > 0 ))    # or [ $# -gt 0 ]
do
    echo "$1"
    shift
done

【讨论】:

  • 请注意,${10} 可以在 bash 中工作,但会限制您的可移植性,因为 sh 的许多实现只允许单个数字规范。
  • @William:有些 shell 不接受它,例如原始的遗留 Bourne shell,但除了我在另一条评论中列出的 shell(Bash、dash、ksh 和 zsh) ,它也适用于 csh、tcsh 和 Busybox ash。
  • @WilliamPursell ${10} 定义为 by POSIX
  • 只有在使用不符合标准的非常旧的实现时才需要担心${10} 的工作。可能只有历史意义……但我还没有使用过它!我想是因为最佳实践规定 10 个参数太多了,除非它们被重复,在这种情况下,您将使用 "$@" 迭代它们而不是枚举它们。
【解决方案2】:

您最多可以有 256 个参数,从 0 到 255:

${255}

【讨论】:

  • 我认为限制取决于外壳。 Bash、dash、ksh 和 zsh 似乎没有。 sh -c 'echo ${333}' /usr/bin/*
  • 我的 shell 轻松上升到 200 万 set $(seq 2097152); echo ${2097152}
猜你喜欢
  • 2015-05-15
  • 2011-09-01
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多