#!/bin/bash
cd $( mktemp -d)
IFS ='' read -r header
for ( ( curr_file_max_rows =1 ; 1 ; curr_file_max_rows* =2 ) ) {
curr_file_name ="file_with_${curr_file_max_rows} _rows"
echo "$header " > "$curr_file_name "
for ( ( curr_file_row_count =0 ; curr_file_row_count < curr_file_max_rows; curr_file_row_count++) ) {
IFS ='' read -r row || break 2
echo "$row " >> "$curr_file_name "
}
}
echo "files generated :"
ls
echo
echo "content of file_with_1_rows :"
cat file_with_1_rows
echo
echo "content of file_with_2_rows :"
cat file_with_2_rows
echo
echo "content of file_with_16_rows (with less than 16 rows because we reached the end of the input) :"
cat file_with_16_rows
echo
IyEvYmluL2Jhc2gKY2QgJChta3RlbXAgLWQpCgpJRlM9JycgcmVhZCAtciBoZWFkZXIKZm9yICgoY3Vycl9maWxlX21heF9yb3dzPTE7IDEgOyBjdXJyX2ZpbGVfbWF4X3Jvd3MqPTIpKSB7CiAgICBjdXJyX2ZpbGVfbmFtZT0iZmlsZV93aXRoXyR7Y3Vycl9maWxlX21heF9yb3dzfV9yb3dzIgogICAgZWNobyAiJGhlYWRlciIgPiAiJGN1cnJfZmlsZV9uYW1lIgogICAgZm9yICgoY3Vycl9maWxlX3Jvd19jb3VudD0wOyBjdXJyX2ZpbGVfcm93X2NvdW50IDwgY3Vycl9maWxlX21heF9yb3dzOyBjdXJyX2ZpbGVfcm93X2NvdW50KyspKSB7CgkJSUZTPScnIHJlYWQgLXIgcm93IHx8IGJyZWFrIDIKCQllY2hvICIkcm93IiA+PiAiJGN1cnJfZmlsZV9uYW1lIgoJfQp9CgplY2hvICJmaWxlcyBnZW5lcmF0ZWQgOiIKbHMKZWNobwoKZWNobyAiY29udGVudCBvZiBmaWxlX3dpdGhfMV9yb3dzIDoiCmNhdCBmaWxlX3dpdGhfMV9yb3dzCmVjaG8KCmVjaG8gImNvbnRlbnQgb2YgZmlsZV93aXRoXzJfcm93cyA6IgpjYXQgZmlsZV93aXRoXzJfcm93cwplY2hvCgplY2hvICJjb250ZW50IG9mIGZpbGVfd2l0aF8xNl9yb3dzICh3aXRoIGxlc3MgdGhhbiAxNiByb3dzIGJlY2F1c2Ugd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dCkgOiIKY2F0IGZpbGVfd2l0aF8xNl9yb3dzCmVjaG8=
stdin
aGVhZGVyCnJvdzEKcm93Mgpyb3czCnJvdzQKcm93NQpyb3c2CnJvdzcKcm93OApyb3c5CnJvdzEwCnJvdzExCnJvdzEyCnJvdzEzCnJvdzE0CnJvdzE1CnJvdzE2CnJvdzE3CnJvdzE4CnJvdzE5CnJvdzIwCnJvdzIxCnJvdzIyCnJvdzIzCnJvdzI0CnJvdzI1CnJvdzI2CnJvdzI3
header
row1
row2
row3
row4
row5
row6
row7
row8
row9
row10
row11
row12
row13
row14
row15
row16
row17
row18
row19
row20
row21
row22
row23
row24
row25
row26
row27