Ví dụ không được đặt IFS
trong tập lệnh, vì bash không cho phép nhập IFS
từ môi trường, theo một nhận xét trong variables.c
:
/* Don't allow IFS to be imported from the environment. */
temp_var = bind_variable ("IFS", " \t\n", 0);
setifs (temp_var);
Tất nhiên, các lệnh tích hợp và không sử dụng tập lệnh nhận được sự gán cho IFS
, nhưng hãy nhớ rằng IFS
chỉ áp dụng cho việc tách từ :
Shell xử lý mỗi ký tự $IFS
như là một dấu phân cách và chia kết quả của các phần mở rộng khác thành các từ bằng cách sử dụng các ký tự này làm dấu kết thúc trường. Nếu IFS
là unset, hoặc giá trị của nó là chính xác <space><tab><newline>
, mặc định, sau đó trình tự <space>
, <tab>
và <newline>
vào lúc bắt đầu và kết thúc của các kết quả của việc mở rộng trước đó được bỏ qua, và bất kỳ chuỗi IFS
ký tự không ở đầu hoặc cuối phục vụ để từ phân định. Nếu IFS
có một giá trị khác với mặc định, thì các chuỗi không gian và tab ký tự khoảng trắng sẽ bị bỏ qua ở đầu và cuối của từ, miễn là ký tự khoảng trắng nằm trong giá trị của IFS
(một IFS
ký tự khoảng trắng). Bất kỳ ký tự nào trong IFS
đó không phải là khoảng trắng IFS, cùng với bất kỳ ký tự liền kề nàoIFS
ký tự khoảng trắng, phân định một trường. Một chuỗi các IFS
ký tự khoảng trắng cũng được coi là một dấu phân cách. Nếu giá trị IFS
là null, không có sự phân tách từ nào xảy ra.