最後のコマンド ラインで、次の bash の動作がおかしいことがわかりました。私にとっては、まったく予想外です。
$ set | grep ^BASH_VERSINFO # Show the array
BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
$ echo "${BASH_VERSINFO[@]}" # Print all array
3 2 25 1 release x86_64-redhat-linux-gnu
$ echo "${BASH_VERSINFO[@]%e}" # Print all array removing final 'e' of every member
3 2 25 1 releas x86_64-redhat-linux-gnu
$ i=4; echo "${BASH_VERSINFO[i]}" # Print an array member
release
$ i=4; echo "${BASH_VERSINFO[i++]}" # Print an array member and increase the 'i' variable
release
$ i=4; echo "${BASH_VERSINFO[i]%e}" # Print an array member removing the final 'e'
releas
$ i=4; echo "${BASH_VERSINFO[i++]%e}" # Why does bash use the next member?
x86_64-redhat-linux-gnu
bash は「i」変数を事前にインクリメントしているようです。
同様の奇妙な動作:
$ i=5; echo "${BASH_VERSINFO[--i]}" # Print array member ${BASH_VERSINFO[4]}. 'i' is descreased one time.
release
$ i=5; echo "${BASH_VERSINFO[--i]%e}" # Print array member ${BASH_VERSINFO[3]%e}. 'i' is descreased two times.
1
誰かが私にその行動を教えてくれますか?
事前にサンクス