如何转换shell脚本以获得更多的命令行输入参数。

如何转换shell脚本以获得更多的命令行输入参数。,shell,command-line-arguments,Shell,Command Line Arguments,脚本使用commad执行。/scriptname arg1 arg2 其中arg1和arg2是运行脚本时传递的整数类型

脚本使用commad执行。/scriptname arg1 arg2

其中arg1和arg2是运行脚本时传递的整数类型
#!/bin/bash
a=${2}
b=${1}
let "c=b+a"
echo $c
$ ( IFS=+; echo "$*" | bc )
16
例如:

$ cat ./sum
#!/bin/sh
( IFS=+; echo "$*" | bc ; )
注:

  • 构造
    $*
    返回脚本的所有参数,这些参数由变量
    IFS
    中的第一个字符分隔。默认情况下,IFS中的第一个字符是空白,因此,例如:

    $ ./sum 2 4
    6
    $ ./sum 2 4 2 8
    16
    
    但是,我们想要表示加法,所以我们设置
    IFS=+
    。因此:

    $ echo "$*"
    2 4 2 8
    
    后者现在的形式适用于
    bc

    $ ( IFS=+; echo "$*" )
    2+4+2+8
    
  • 因为上面使用的是
    bc
    ,所以它既可以用于浮点运算,也可以用于整数加法

  • paren,
    (…)
    ,用于创建子shell。对于显示的简单脚本,这不是必需的。如果实际脚本更复杂,那么将更改保留在
    IFS
    local中可能有好处

  • 可供替代的 考虑以下脚本:

    #!/bin/bash
    a=${2}
    b=${1}
    let "c=b+a"
    echo $c
    
    $ ( IFS=+; echo "$*" | bc )
    16
    
    例如:

    $ cat sum2
    #!/bin/sh
    ( IFS=+; echo $(( $* )) )
    

    这种方法使用bash的算法,
    $(…)
    ,来进行计算,将其限制为整数。

    我认为解释
    IFS
    的含义会很有用。。。我猜Sachin是一个初学者scripts@JimHawkins好的方面:我添加了对
    IFS
    $*
    的解释。