While replacing external commands in a shell script, I used an array to get rid of awk's NF
.
Now, since I moved from bash to POSIX sh, I cannot get the array marked right:
#!/bin/bash
export RANGE="0 1 4 6 8 16 24 46 53"
RANGE=($RANGE)
echo arrayelements: $((${#RANGE[@]}))
LAST=$((${#RANGE[@]}-1))
echo "Last element(replace NF): ${RANGE[$LAST]}"
# ./foo
arrayelements: 9
Last element(replace NF): 53
I'm using OpenBSD's, sh and it has exactly the same size as the ksh.
Changing above to /bin/sh
, it seems that the following doesn't work:
set -A "$RANGE"
set -- "$RANGE"
How could I realise the above script in /bin/sh
? (Note that it works fine if you invoke bash with --posix
, that's not what I look for.)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…