$ cat sortmerg
#!/bin/bash
usage () {
if [ $# -ne 2 ]; then
	echo "Usage: $0 file1 file2" 2>&1
	exit 1
	fi
}

# Default temporary directory
: ${TEMPDIR:=/tmp}

# Check argument count
usage "$@"

# Set up temporary files for sorting
file1=$TEMPDIR/$$.file1
file2=$TEMPDIR/$$.file2

# Sort
sort $1 > $file1
sort $2 > $file2

# Open $file1 and $file2 for reading. Use file descriptors 3 and 4.
exec 3<$file1
exec 4<$file2

# Read the first line from each file to figure out how to start.
read Line1 <&3
status1=$?
read Line2 <&4
status2=$?

# Strategy: while there is still input left in both files:
#   Output the line that should come first.
#   Read a new line from the file that line came from.
while [ $status1 -eq 0 -a $status2 -eq 0 ]
	do
		if [[ "$Line2" > "$Line1" ]]; then
			echo -e "1.\t$Line1"
			read -u3 Line1
			status1=$?
		else
			echo -e "2.\t$Line2"
			read -u4 Line2
			status2=$?
		fi
	done

# Now one of the files is at end of file.
# Read from each file until the end.
# First file1:
while [ $status1 -eq 0 ]
	do
		echo -e "1.\t$Line1"
		read Line1 <&3
		status1=$?
	done
# Next file2:
while [[ $status2 -eq 0 ]]
	do
		echo -e "2.\t$Line2"
		read Line2 <&4
		status2=$?
	done

# Close and remove both input files
exec 3<&- 4<&-
rm -f $file1 $file2
exit 0
