如何在busybox shell中使用$ @获取参数的值

时间:2017-08-17 04:36:52

标签: bash shell posix busybox ash

在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中做到这一点

2 个答案:

答案 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