如果有超过9个参数,如何访问函数的参数?

时间:2011-01-27 13:03:19

标签: bash function shell arguments

前9个参数从$ 1- $ 9引用,$ 10被解释为$ 1后跟0.我如何解释这个并访问大于10的函数的参数?

感谢。

3 个答案:

答案 0 :(得分:27)

使用:

#!/bin/bash
echo ${10}

要测试10美元的差异,请使用foo.sh中的代码:

#!/bin/bash
echo $10
echo ${10}

然后:

$ ./foo.sh first 2 3 4 5 6 7 8 9 10
first0
10

如果您有以下情况,情况也是如此:

foobar=42
foo=FOO
echo $foobar # echoes 42
echo ${foo}bar # echoes FOObar

如果您想消除歧义,请使用{}

MY2C

答案 1 :(得分:4)

如果您使用bash,则可以使用${10}

在这种特殊情况下,

$ {...}语法似乎符合POSIX标准,但最好使用shift这样的命令:

while [ "$*" != "" ]; do
  echo "Arg: $1"
  shift
done
编辑:我注意到我没有解释shift的作用。它只是移动脚本(或函数)的参数。例如:

> cat script.sh
echo "$1"
shift
echo "$1"

> ./script.sh "first arg" "second arg"
first arg
second arg

如果它可以提供帮助,这里有一个getopt / shift的例子:

while getopts a:bc OPT; do
 case "$OPT" in
  'a')
   ADD=1
   ADD_OPT="$OPTARG"
   ;;
  'b')
   BULK=1
   ;;
  'c')
   CHECK=1
   ;;
 esac
done
shift $( expr $OPTIND - 1 )
FILE="$1"

答案 2 :(得分:2)

通常,为了安全起见,当Bash解释代码时,整个给定字符串用于变量名称,您需要将其括在大括号中:${10}

相关问题