Lý do mà IFS không được thiết lập là bash mà không nhìn thấy đó như là một lệnh riêng biệt ... bạn cần phải đặt một thức ăn đường hoặc một dấu chấm phẩy sau lệnh để chấm dứt nó:
$ cat /tmp/ifs.sh
LINE="7.6.5.4"
IFS='.' read -a ARRAY <<< "$LINE"
echo "$IFS"
echo "${ARRAY[@]}"
$ bash /tmp/ifs.sh
7 6 5 4
nhưng
$ cat /tmp/ifs.sh
LINE="7.6.5.4"
IFS='.'; read -a ARRAY <<< "$LINE"
echo "$IFS"
echo "${ARRAY[@]}"
$ bash /tmp/ifs.sh
.
7 6 5 4
tôi không chắc chắn lý do tại sao làm điều đó một cách đầu tiên không phải là một lỗi cú pháp mặc dù.
Nguồn
2011-10-31 12:31:38
Sử dụng khác của toán tử này (thay vì đặt tên theo đường ống bằng mknod) khi bạn cần nhiều ống trong một đơn | pipline: ví dụ: dữ liệu echo | lệnh --data-on-stdin --other-data-on-fd-3 3 <<< 'dữ liệu khác' – mosh