Compatibility Enhancements
This version additionally passed the test cases in test_fixed_v1.2.2.bash. Moreover, this version passed all of the cases in ifs-posix.tests, which is a test script in Bash official repo. It's amazing.
detalis
- Fixed IFS problems
π£ a=$'ab\001cd\001ef'; IFS=$'\001'; b=$'uv\177wx\177yz'; for w in ab${b}y${a}z ; do echo $w ; done
abuvwxyzyab
cd
efz
π£ IFS=$' \t\n'
π£ x=" a" ; set $x ; echo @$1@
@a@
π£ IFS=": "; x=" a" ; set $x ; echo @$1@
@a@
π£ IFS=": "; x=" a" ;echo @$x@
@ a@
π£ IFS=$' \t\n'- Fixed
set -problems
π£ set x - ; echo $2
-
π£ str="-"; set x $str ; echo $2
-
π£ set "" ""; f() { echo $# ; } ; f "$@"
2
π£ set "" ; f() { echo $# ; } ; f "$@"
1
π£ set "" ; f() { echo $# ; } ; f "${@}"
1- Fixed bugs around arrays
π£ c=(outside) ; f() { readonly c=(3) ; }; f; declare -p c
declare -ar c=([0]="3")
π£ c=(outside) ; f() { readonly 'c=(3)' ; }; f; declare -p c
declare -ar c=([0]="(3)")
π£ r=(1) ; f() { export r='(5)' ; }; f; declare -p r
declare -ax r=([0]="(5)")- Support
printf %#x
π£ printf "%#x\n" 12
0xc
π£ printf "%#x\n" "'1"
0x31
π£ printf "%#x\n" "'γ"
0x3042
π£ tmp=$'\x7f'; printf "%#1x\n" "'$tmp"
0x7f- Fixed bugs of
continue
π£ for i in a b c; do echo $i; continue; echo bad-$i ; done; echo end-1
a
b
c
end-1- Fixed value check rules of braced variables
π£ f() { echo "-${*-x}-" ; } ; f ""
--
π£ echo F=~
F=/Users/ueda
π£ echo ${A:-\a}
a
π£ echo "${A:-\a}"
\a
π£ echo ${A:-~}
/Users/ueda
π£ echo "${A:-~}"
π£ : ${A:=~}; echo $A
/Users/ueda
π£ : ${A:=~:aa}; echo $A
/Users/ueda
π£ : ${A:=~/bin:~/bin2}; echo $A
/Users/ueda
π£ : ${A:=B=~/bin:~/bin2}; echo $A
/Users/ueda
π£ B=aaa;C=D=~/bin:$B; echo $C
D=~/bin:aaa- Fixed tilde expansion rules in here-documents
π£ cat << EOF
> ~
> EOF
~
π£ cat << EOF
> ~/bin
> EOF
~/binFull Changelog: v1.2.1...v1.2.2