Bash
でファイルの内容をループすることは、多くの場合、bashスクリプトを使用してファイルから各行を読み取る必要があります。 行をファイルから読み取るには、さまざまな方法があります。 では、次の例のようにして初の作成方法のサンプルファイルを実行スクリプトの読書サンプルファイルです。
読み取るファイルを作成します
# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt
上記のコードを実行すると、次の結果が得られます。
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
Do−Whileを使用します
このアプローチでは、do-whileループを使用してファイルを読み取ります。, ファイルの最後にファイル名を入力として与えます。 まず、スクリプトを作成し、それに実行権限を与えます。 その後、ファイルを読み取って結果を表示することができます。
#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt
上記のコードを実行すると、次の結果が得られます。
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
forとinを使用します。
次のアプローチでは、in句とともにforループを使用します。 ここでは、forループの一部である変数にcatコマンド(各行)の結果を格納し、変数をエコーします。,
#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done
上記のコードを実行すると、次の結果が得られます。
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
echoのみで
echoのみを使用してファイルの内容を取得することもできます。 しかし、結果は行の配列として出力され、すべての行の組み合わせを示す一行の出力として出力されます。
echo $( < a_file.txt )
上記のコードを実行すると、次の結果が得られます。
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
空白行でファイルを読み込む
ファイルに空白の行がある場合、次のコードを使用して出力でそれらを回避します。, これは、空白行がフィールド区切り文字として扱われ、出力で回避されるように、IFS(internal Field Separator)が空の文字列に設定されていることを使用します。 3行目と4行目の間に空白行があると仮定すると、それらの空白の先取特権は印刷されません。
#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt
上記のコードを実行すると、次の結果が得られます。
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
03−Jan-2020 11:45:05に公開
広告