lineasを読み取るbashスクリプトがあります
filename=$
while read LINE
do
......
done < $filename
$ LINEを文字列(my_string)に格納して、各行に対して実行できるようにするにはどうすればよいでしょうか。
echo $ my_thing "" $ my_string
いくつか試しましたが、echoまたはprintfで印刷すると、$LINEはその前のすべてを削除します
Tjans
ファイルにキャリッジリターンが含まれている場合があります。たとえば、そのスタイルの行末を持つDOSまたはWindowsファイルの場合があります。その場合はdos2unix
、ファイルを実行してUnixスタイルの行末に変換するか、ファイルを読みながら削除することができます。
LINE="${LINE//$'\r'}"
do
これはステートメントの直後になります。
デニス・ウィリアムソンは、「それ以前に印刷されたものをすべて削除する」という動作が見られる理由を特定したと思います。
bashスクリプトで「読み取り中...」処理を実行する場合は、-rフラグを使用してIFSを読み取り、null文字列に設定する必要があることを指摘しておきます。1つ目は、stdinのバックスラッシュを生で処理するために必要であり、2つ目は、stdinの開始と終了で空白がトリミングされないようにするために必要です。次のように組み合わせることができます。
while IFS= read-r LINE; do
echo "$LINE"
done < "file"
そんな風にwhile readループをすると、その行が変数$LINEに格納されるので、これを試してみてください
while read -r LINE
do
echo "$LINE $LINE"
done <"file"
LINEを別の文字列に保存したい場合は、これを行います
my_other_string=$LINE