Bash 似乎在临时的、每个命令的变量分配方面表现得不可预测,特别是IFS.
我经常IFS与read命令一起分配一个临时值。我想使用相同的机制来定制输出,但目前使用函数或子shell 来包含变量赋值。
$ while IFS=, read -a A; do
> echo "${A[@]:1:2}" # control (undesirable)
> done <<< alpha,bravo,charlie
bravo charlie
$ while IFS=, read -a A; do
> IFS=, echo "${A[*]:1:2}" # desired solution (failure)
> done <<< alpha,bravo,charlie
bravo charlie
$ perlJoin(){ local IFS="$1"; shift; echo "$*"; }
$ while IFS=, read -a A; do
> perlJoin , "${A[@]:1:2}" # function with local variable (success)
> done <<< alpha,bravo,charlie
bravo,charlie …Run Code Online (Sandbox Code Playgroud)