ファイルを読むために内部フィールドセパレータを使用します

内部フィールドセパレータ(内部フィールドセパレータ)と呼ばれる特殊な環境変数IFS、
デフォルトでは、フィールド区切りの内側など、デフォルトの文字次のbashシェル:

  • ブランク
  • タブ
  • 改行

ファイルを読みます

あなたは一時的にフィールド区切り文字はbashシェルとして扱われている制限するために、IFS環境変数の値を変更することができます。
拾うだけ認識し、改行、IFS = $「\ n」は 。
次のようにファイルを作成するには、最初の以下:
$ CAT州

Alabama
Alaska
Arizona
Delaware

そして、Testという名前のスクリプト作成
のテスト$ CATを

#!/bin/bash
# reading values from a file
file="states"

IFS=$'\n'
for state in $(cat $file)
do
  echo "Visit beautiful $state"
done

テストスクリプトを実行するには、次の出力を得ることができます

Visit beautiful Alabama
Visit beautiful Alaska
Visit beautiful Arizona
Visit beautiful Delaware

注:あなたは、彼らがシリアル回線上で並ぶように割り当てられている限りとして、IFSの文字を複数指定したい場合は
、このようなIFS = $「\ n」のよう:; " 改行意志、コロン、セミコロン、フィールド区切り文字として二重引用符。

ループ処理ファイル

常にフィールドセパレータを変更し、IFSを変更することにより、このループ処理ファイルで使用することができる
:新しいファイルを作成するために
$ CAT都市

Shandong:jinan
heilongjiang:haerbin
fujian:fuzhou
yunan:kunming

そして、TEST2という名前のスクリプトを作成
$ CAT TEST2を

#!/bin/bash
#city in province
IFS=$'\n'
for city in $(cat cities)
do 
  echo City is $city
  IFS=:
  for value in $city
  do 
     echo " $value"
  done
done

Test2をスクリプトの実行は、次のような出力を得ることができます:

City is Shandong:jinan
 Shandong
 jinan
City is heilongjiang haerbin
 heilongjiang
 haerbin
City is fujian fuzhou
 fujian
 fuzhou
City is yunan kunming
 yunan
 kunming

上記の例から、データの各行読み取るための設定IFS開始改行を、見ることができ
、最後のサイクルのネストされた表示IFSを変更することにより、データの各フィールドの各ラインを分離するために、コロンを。

公開された75元の記事 ウォン称賛7 ビュー10000 +

おすすめ

転載: blog.csdn.net/zhengdong12345/article/details/101025541