【Shell】シェル ~ 環境変数 IFS ~

■ はじめに

小ネタ。

CI/CD の処理の一環で、
テキストファイルにバージョンが指定されていて
そのファイルを読み込んで、カウントアップした値を
処理で使いたいなっと思った時に、 IFS がでてきたので
メモっておく

目次

【1】環境変数 IFS
【2】readコマンド
【3】サンプル
 例1:バージョンをインクリメントする
 例2:1行づつ読み込み出力する

【1】環境変数 IFS

* Internal Filed Separator  (内部ファイル区切り文字)
* 区切り文字を指定として認識されている

【2】readコマンド

read [variable1, …]

* 標準入力から行を 1 行読み取り、
 その行を複数のフィールドに分割し、
 各 variable に割り当てます

【3】サンプル

例1:バージョンをインクリメントする

houseisan.com/s?h=80e0a85a27df4bada230163ae5654e47

#!/bin/bash

CURRENT_VERSION=`cat VERSION.txt`
NEW_VERSION=`echo $CURRENT_VERSION | ( IFS=".$IFS" ; read a b c && echo $a.$b.$((c + 1)) )`
echo $NEW_VERSION

VERSION.txt

1.0.0

例2:1行づつ読み込み出力する

#!/bin/bash

# 改行で区切り文字になる
while IFS= read -r line; do
  echo "$line"
done < hello.txt

hello.txt

Hello
World

関連記事

シェル ~入門編~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
シェル ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2018/03/03/210642
シェル ~ ファイル処理あれこれ ~
https://dk521123.hatenablog.com/entry/2020/09/28/000000
シェル ~ CSV / TSVファイルの読み込み ~
https://dk521123.hatenablog.com/entry/2021/08/13/120956
Amazon Redshift ~ SHOW TABLE コマンド ~
https://dk521123.hatenablog.com/entry/2023/03/07/152123