如何在ShellScript中传递10个以上的参数

时间:2017-09-27 10:48:56

标签: linux shell unix

 sed  -e "s/${MyToken}/${arg}/g" file

'arg'的价值在第9次论证之前工作正常。在第10次论证之后,它失败了

2 个答案:

答案 0 :(得分:0)

通常,当您需要超过10个参数时,脚本的逻辑就会有缺陷。

限制通常基于您正在使用的shell bash可以使用更多,但如果您使用旧sh,通常会锁定到第9个参数。

如果你想迭代多个参数我可以推荐简单:

for arg in "$@"或使用shift来" shift"某种while ||中的位置参数for循环。

更好的方法是通过getoptgetopts等工具解析命令行参数。

答案 1 :(得分:0)

以下是一个例子:

#!/bin/ksh   
echo There is $# parameters
while [ $# -ne 0 ]; do
         echo $1
         shift
    done

输出:

     Will:/home> ./script a b c d e f g h i j k l m n o p q r s t u v w x y z
     There is 26 parameters
        a
        b
        c
        d
        e
        f
        g
        h
        i
        j
        k
        l
        m
        n
        o
        p
        q
        r
        s
        t
        u
        v
        w
        x
        y
        z

$#计算传递给脚本的参数数量。

Shift正在向左移动参数,因此在一个循环$1变为b后依此类推。