在shell腳本中替換外部命令時,我使用了一個數組來擺脫awk的NF
。現在如何在POSIX sh中標記數組?
,因爲我從慶典到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
上面的腳本? (請注意,如果你用--posix
調用bash,那麼它工作正常,這不是我所期望的。)
另外:所有大寫變量名稱都是錯誤的形式。請參閱http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html第四段中有關環境變量名稱的約定,請記住環境變量和shell變量共享一個名稱空間 - 所以使用小寫名稱因爲你的局部變量將防止意外地覆蓋系統的含義。 –