シェルスクリプト(BASH)内で「while」ループを使用して、ファイルの行を(1つずつ)読み取ります-「幸いなことに」、ファイルに行が含まれている回数が機能しません。
概要は次のとおりです。 $ cat inputfile.txt
1
2
3
4
5
さて、シェル スクリプトの内容は以下に示すように非常に単純です。
#!/bin/bash
while read line
do
echo $line ----------;
done < inputfile.txt;
上記のスクリプト コードは正常に動作します..... :)。inputfile.txt の 5 行すべてが表示されます。
今、コードが次のような別のスクリプトがあります。
#!/bin/bash
while read line
do
echo $line ----------;
somevariable="$(ssh sshuser@sshserver "hostname")";
echo $somevariable;
done < inputfile.txt;
さて、このスクリプトでは、while ループは "1 ----------" 行のみを表示し、"$somevariable" の有効な値を表示した後、ループを終了します。
私がここで見逃しているものは何か。私はいくつかの数値 N < inputfile.txt を使用して、done <&N の方法を使用しようとはしませんでした (つまり、N 記述子が指すファイルを使用して入力リダイレクターを変更する) ....しかし、なぜこの単純なスクリプトがそうでないのか不思議ですN号で働いています。子シェルで「ssh」操作を実行する単純な変数宣言を追加したときのことです。
ありがとう。