IFS の取り扱い

デフォルト(スペース・タブ・改行)

IFS=$' \t\n'

IFS を改行のみに設定する

IFS=$'\n'

参考:

環境変数 IFS – あらほり Linux メモ

スペースが含まれる文字列を1行として扱う方法 -逆引きシェルスクリプト | Linuxと過ごす

bash の IFS に改行のみを設定するには – 計算機と戯れる日々

シェルでループ時のデリミタを切り替えたい | それなりブログ

Bash internal field separator (IFS) usage – GitHub Gist

現在の IFS を確認する

$ printf "%q\n" "$IFS"
$' \t\n'

IFS をリセットする

  • Bash の IFS のデフォルトはスペース・タブ・改行(IFS=$' \t\n'
  • unset IFS を実行した場合、IFS は null になるが、その場合のデフォルトの挙動はスペース・タブ・改行区切りとなる
  • IFS="" (空文字) に設定すると、区切りが一切行われない

参考:

unset IFS – unexpected behaviour – Stack Overflow

Understanding IFS – Unix & Linux Stack Exchange

IFS null is not the same as unset IFS? – Unix & Linux Stack Exchange

Resetting Internal Variables to Default (BASH, IFS in particular) | LinuxQuestions.org

for と read の違い

参考:

ファイルを行ごとに読み込んで、各行ごとにスペース区切り配列に入れるスクリプト – cameong’s blog

How to read complete line in ‘for’ loop with spaces – Ask Ubuntu

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です