在替换shell脚本中的外部命令时,我使用了一个数组来摆脱awk NF.
现在,由于我从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
Run Code Online (Sandbox Code Playgroud)
我正在使用OpenBSD,sh和它的大小与ksh完全相同.更改为以上/bin/sh,似乎以下不起作用:
set -A "$RANGE"
set -- "$RANGE"
Run Code Online (Sandbox Code Playgroud)
我怎么能实现上面的脚本/bin/sh?(注意,如果你调用bash,它可以正常工作--posix,那不是我想要的.)