如何在shell中处理10个以上的参数

Ash*_*osh 89 linux parameters bash shell

我在linux上使用bash shell,并希望在shell脚本中使用10个以上的参数

Pau*_*ce. 140

使用花括号将它们设置为关闭:

echo "${10}"
Run Code Online (Sandbox Code Playgroud)

您还可以迭代位置参数,如下所示:

for arg
Run Code Online (Sandbox Code Playgroud)

要么

for arg in "$@"
Run Code Online (Sandbox Code Playgroud)

要么

while (( $# > 0 ))    # or [ $# -gt 0 ]
do
    echo "$1"
    shift
done
Run Code Online (Sandbox Code Playgroud)

  • 请注意, ${10} 将在 bash 中工作,但会限制您的可移植性,因为 sh 的许多实现只允许单个数字规范。 (3认同)
  • @WilliamPursell `${10}` 定义为 [由 POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02) (2认同)
  • 只有在使用不符合标准的非常旧的实现时才需要担心 `${10}` 的工作。可能只是出于历史兴趣……但我还没有使用过它!我想是因为最佳实践要求 10 个参数太多,除非它们被重复,在这种情况下,您将使用 `"$@"` 迭代它们而不是枚举它们。 (2认同)

luk*_*uku 20

您最多可以拥有255个参数:

${255}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这个限制取决于shell.Bash,dash,ksh和zsh似乎没有它.`sh -c'echo $ {333}'/ usr/bin/*` (3认同)
  • 我的外壳轻松达到了200万个set $(seq 2097152); 回声$ {2097152}` (2认同)
  • 您可以运行“getconf ARG_MAX”来找出系统可以处理的最大参数数。 (2认同)