How to do array operation in busybox

walter harms wharms at bfs.de
Fri Jun 26 09:57:58 UTC 2015



Am 26.06.2015 11:07, schrieb Pratik Prajapati:
> Thanks. Your solution is very useful.
> 

a more shell like solution is simple using a $IFS separated list
and the power of set but if you have sparse values and you need the gaps
you are better of with this solution.

For the example you could do something like:
LST=""
for NAME in ARG
do
	LST=$LST" "$NAME
done

just my 2 cents,
re,
 wh


> On Fri, Jun 26, 2015 at 12:01 PM, Sven-Göran Bergh <
> sgb-list+busybox at systemaxion.se> wrote:
> 
>> On 06/26/2015 07:59 AM, Pratik Prajapati wrote:
>>
>>> I tried one method and was unable to correct it. Can you give me the
>>> correct method ?
>>>
>>> On Fri, Jun 26, 2015 at 11:25 AM, Sven-Göran Bergh
>>> <sgb-list+busybox at systemaxion.se
>>> <mailto:sgb-list+busybox at systemaxion.se>> wrote:
>>>
>>>     Hi Patrik
>>>
>>>     On 06/26/2015 07:49 AM, Pratik Prajapati wrote:
>>>
>>>         Hi,
>>>
>>>         I am working on LTP-DDT project (
>>> https://github.com/rogerq/ltp-ddt)
>>>         which i cross-compiled for my target and my target uses busybox.
>>> But
>>>         running it on my target gives me error as array operation is not
>>>         supported in busybox.
>>>
>>>         I have attached script with this mail.
>>>
>>>         I am getting error for :
>>>
>>>         sh: /opt/ltp/testcases/bin/ddt/common/common.sh: line 305:
>>>         syntax error:
>>>         bad substitution
>>>
>>>         I tried this:
>>>
>>>         |305: shift
>>>         306: index=0
>>>         307: for  arg;
>>>         308: do
>>>         309:   x[$index]=$arg
>>>         310:   ((index++))
>>>         311: done
>>>
>>
>> I am afraid that the work around is quite ugly. In this case
>> you may use the evil eval:
>>
>> index=0
>> for arg;
>> do
>>         eval x${index}=$arg
>>         eval printf "x%s:\\\t%s\\\n" "${index}" "\$x${index}"
>>         ((index++))
>> done
>>
>> Yes, I know it is ugly and I said so.
>> Arrays are one of the things I miss the most in ash.
>>
>> Brgds
>> /S-G
>>
>>
>>          |but i got error:|  syntax error: unexpected "(" (expecting "}")
>>>
>>>         Also couldn't found any solution on google.
>>>
>>>         How to make it work on busybox. Please help.
>>>
>>>
>>>     Arrays is a bash feature, it is not supported by ash or standard
>>>     shells. So unfortunately the short answer is that it does not work.
>>>     However there are often ways to rework a script to avoid arrays.
>>>
>>>     Brgds
>>>     /S-G
>>>
>>>
>>>         Thanks,
>>>
>>>         Pratik
>>>
>>>
>>>
>>>         _______________________________________________
>>>         busybox mailing list
>>>         busybox at busybox.net <mailto:busybox at busybox.net>
>>>         http://lists.busybox.net/mailman/listinfo/busybox
>>>
>>>
>>>
>>
> 
> 
> 
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox


More information about the busybox mailing list