Al reemplazar comandos externos en un script de shell, utilicé una matriz para deshacerme de awk's NF
.¿Cómo marcar una matriz en POSIX sh?
Ahora, desde que me mudé de bash para POSIX sh, no puedo obtener la matriz marcada derecha:
#!/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
estoy usando OpenBSD, SH y tiene exactamente el mismo tamaño que el ksh. Cambio de arriba para /bin/sh
, parece que el siguiente no funciona:
set -A "$RANGE"
set -- "$RANGE"
¿Cómo podría darse cuenta de que el guión acaba en /bin/sh
? (Tenga en cuenta que funciona bien si invoca bash con --posix
, eso no es lo que busco)
Aparte: los nombres de las mayúsculas son de mala calidad. Consulte las convenciones para nombres de variables de entorno en http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html, cuarto párrafo, teniendo en cuenta que las variables de entorno y las variables de shell comparten un espacio de nombres, por lo que se utilizan nombres de minúsculas sus variables locales evitarán que se sobrescriba accidentalmente algo con significado para el sistema. –