1

lineasを読み取るbashスクリプトがあります

filename=$

while read LINE
do
 ...... 
done < $filename

$ LINEを文字列(my_string)に格納して、各行に対して実行できるようにするにはどうすればよいでしょうか。

echo $ my_thing "" $ my_string

いくつか試しましたが、echoまたはprintfで印刷すると、$LINEはその前のすべてを削除します

Tjans

4

3 に答える 3

1

ファイルにキャリッジリターンが含まれている場合があります。たとえば、そのスタイルの行末を持つDOSまたはWindowsファイルの場合があります。その場合はdos2unix、ファイルを実行してUnixスタイルの行末に変換するか、ファイルを読みながら削除することができます。

LINE="${LINE//$'\r'}"

doこれはステートメントの直後になります。

于 2010-01-26T14:21:02.060 に答える
0

デニス・ウィリアムソンは、「それ以前に印刷されたものをすべて削除する」という動作が見られる理由を特定したと思います。

bashスクリプトで「読み取り中...」処理を実行する場合は、-rフラグを使用してIFSを読み取り、null文字列に設定する必要があることを指摘しおきます1つ目は、stdinのバックスラッシュを生で処理するために必要であり、2つ目は、stdinの開始と終了で空白がトリミングされないようにするために必要です。次のように組み合わせることができます。

while IFS= read-r LINE; do
    echo "$LINE"
done < "file"
于 2010-02-15T23:29:59.483 に答える
0

そんな風にwhile readループをすると、その行が変数$LINEに格納されるので、これを試してみてください

while read -r LINE
do
 echo "$LINE $LINE"
done <"file"

LINEを別の文字列に保存したい場合は、これを行います

my_other_string=$LINE
于 2010-01-26T13:47:15.913 に答える