bashであれば#1の方が書かれたように配列が使えますが、純粋なBシェルでは配列は使えません。 exec 3<&0 < TBL.txt count=0 while read line do eval ex$count=\$line count=`expr $count + 1` done exec 0<&3 3<&- echo $ex1 のようにします。 最後のechoのところで、添字が変数のときは、 eval echo \$ex$count のようにします。 何故上手く行かないのかは、シェルが変数置換したり、* を展開したり、' や " や \ 等の特殊文字を処理したり、組み込みコマンドの判断をしたりには一定の順序があるということです。 ex$count=$line はイコールの左辺がシェル変数の形式をしていない($がある)ため、シェル変数への代入と見なされません。この判断は $ による