tail: 不正なオプション -- 単一スクリプト内の同じファイルで head と tail を使用しているときに -53\r エラーが発生しました

tail: 不正なオプション -- 単一スクリプト内の同じファイルで head と tail を使用しているときに -53\r エラーが発生しました

使っています

a=`head -1 Rt.in` 

ファイルから最初の値を取得し、それを変数として保存し、同じ変数を使用してtail -$a入力の最後の行を末尾に表示します。しかし、エラーが発生します:

tail: illegal option -- -53\r.

入力ファイルには、3 行目以降に 4 つの列があります。

以下は私が使用しているスクリプトの一部です:

a=`head -1 Rt.in`
echo $a
tail -$a Rt.in

出力で表示されるエラーは次のとおりです:

tail: illegal option -- -53\r

入力ファイルの一部は次のようになります。

53
FEPXUU
H    9.155963    1.289174   11.531518
H    9.004353    2.726286   11.683448
N   11.762550    3.890769   11.785241
N   10.610393    3.635048    9.544268
N   10.745642    1.175050    9.076323
N   13.210069    2.309946    9.848128
N   12.319480    0.955257   11.800435
C   12.359945    3.942548   12.929277
C   11.267322    5.027779   11.274755
H    9.052185    4.031311    6.865735
C   10.031631    3.303244    8.416945
C   10.093512    1.894663    8.164740
C    9.546565    1.312421    7.090592
. 
.
.

このような行は 53 個あります。

なぜこのエラーが発生するのか、また、どうすればこのエラーを除去できるのかを教えていただけますか?
ターミナルでパイプを使用して上記のスクリプトを直接実行すると、次のようなエラーが表示されtail: -: No such file or directory、その後にいくつかの原子のリストが表示されます。

答え1

行数はパラメータではありません。次のようになります。

tail -n $a Rt.in

これで、ファイルの最初の行で定義されている最後の行の数を取得できます。これはコマンド-nでも使用する必要がありますhead

関連情報