При замене внешних команд в сценарии оболочки я использовал массив, чтобы избавиться от NF
.
в awk. Теперь, поскольку я перешел с bash на POSIX sh, я не могу получить массив, помеченный правильно:
#!/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
Я использую OpenBSD, sh, и он имеет точно такой же размер, как и ksh.При изменении выше на /bin/sh
кажется, что следующее не работает:
set -A "$RANGE"
set -- "$RANGE"
Как я мог реализовать вышеописанный скрипт в /bin/sh
?(Обратите внимание, что он работает нормально, если вы запускаете bash с --posix
, это не то, что я ищу.)