#!/bin/bash function get_i_j { local file=$1 i=$2 j=$3 a_i_j i1 j1 w i1=1 while read line; do w=$(echo $line | wc -w) for j1 in $(seq $w); do a_i_j=$(echo $line|cut -d" " -f$j) if [ $i -eq $i1 -a $j -eq $j1 ]; then echo $a_i_j return fi done ((i1++)) done<$file echo 0 } function matrix_difference { local file1=$1 file2=$2 i=1 j n a_i_j b_i_j w >|tmp while read line; do w=$(echo $line | wc -w) s="" for j in $(seq $w); do a_i_j=$(echo $line|cut -d" " -f$j) b_i_j=$(get_i_j $file2 $i $j) s=$s" "$[a_i_j-b_i_j] done echo $s >> tmp ((i++)) done<$file1 } last_name=$(echo $* |tr " " -) last_line="The matrix difference ${last_name} is:" for i in $@;do echo "The matrix $i is:" cat $i done matrix_difference $1 $2 shift;shift; for i in $@;do cp tmp tmp1 matrix_difference tmp1 $i done echo $last_line cat tmp