This sends the content of $file_name to the read command as its standard input, with IFS set to ; for the read (and only the read, so no need to save/reset it). -A tells read to split the input on IFS and save each word in the named array (a). ${#a[*]} gives the number of elements saved.