如何转换shell脚本以获得更多的命令行输入参数。
脚本使用commad执行。/scriptname arg1 arg2如何转换shell脚本以获得更多的命令行输入参数。,shell,command-line-arguments,Shell,Command Line Arguments,脚本使用commad执行。/scriptname arg1 arg2 其中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
,所以它既可以用于浮点运算,也可以用于整数加法(…)
,用于创建子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
和$*
的解释。