シェルスクリプト IFSで区切り文字を設定するサンプル
環境
RHEL8.6
概要
環境変数「IFS」(Internal Filed Separator)には、bashの場合「スペース」「タブ」「改行」($’ \t\n’)といった値が初期設定されています。
これらが文字の区切りとして認識されています。
ファイル等を読み込んだりする場合に、読み込む文の区切り文字を変更したい場合は、「IFS」に区切り文字としたい値を設定することで、
区切りとさせる文字を好きに設定することが出来ます。
使用例
#!/bin/bash OLDIFS=$IFS IFS=: head -n 10 /etc/passwd | while read NAME PASS USERID GROUPID COMMENT HOMEDIR LOGINSHELL do echo "$NAME $LOGINSHELL" done IFS=$OLDIFS 実行結果 $sh test03.sh root /bin/bash bin /sbin/nologin daemon /sbin/nologin adm /sbin/nologin lp /sbin/nologin sync /bin/sync shutdown /sbin/shutdown halt /sbin/halt mail /sbin/nologin operator /sbin/nologin
説明
「IFS」の設定を「OLDIFS=$IFS」でバックアップしてから「:」をIFSに設定し、「/etc/passwd」ファイルの各フィールドを、
それぞれ「NAME」「PASS」「USERID」「GROUPID」「COMMENT」「HOMEDIR」「LOGINSHELL」といった変数に格納します。