在busybox shell脚本test.sh(不是bash)中,如果我将4个参数传递给它,我怎么能直接从每个参数中获取值。例如
#!/bin/sh
args=("$@")
param3=${args[2]} #I want to get the value of the parameter 3, it works in bash
#but it does not work in busybox shell
如果我像这样运行脚本:
$test.sh 1 2 "3 4" 5
目的是我想得到NO3字符串" 3 4"直接在脚本中。我怎么能在busybox shell中做到这一点
答案 0 :(得分:1)
Busybox shell是一个简单的POSIX兼容shell(特别是ash
,Almquist Shell)。 POSIX shell不需要数组,我打赌ash
没有数组。
但是,您不需要一个脚本参数数组,它们会自动放入变量$1
,$2
等等。所以您只需要:
param3=$3
确保当您使用$param3
时将其用双引号括起来,这样就不会因为空格而遇到问题(除非您希望将它们拆分为单独的参数)。
some_other_command "$param3"
答案 1 :(得分:0)
数组不是POSIX规范的一部分。所以只需使用param3="$3"
即可。无需使用数组(也适用于bash
)。有关位置参数的更多信息here。