以下のようなファイルがあるとすると
1 2 3 4 |
[yuta@SERVER test]$ cat files_test /etc/hosts, ip a, netstat -rn, |
シェル内でスペース区切り文字を読み込むとスペースで区切られてしまう
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[yuta@SERVER test]$ cat test.sh #!/bin/bash for LINE in `cat $1` do echo $LINE done [yuta@SERVER test]$ sh test.sh files_test /etc/hosts, ip a, netstat -rn, |
IFS(Internal Field Separator)の環境変数に区切り文字を指定する。
環境変数設定前に現在の状態を保存し、処理終了後に元に戻す。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[yuta@SERVER test]$ cat test.sh #!/bin/bash PRE_IFS=$IFS IFS=$'\n' for LINE in `cat $1` do echo $LINE done IFS=$PRE_IFS [yuta@SERVER test]$ sh test.sh files_test /etc/hosts, ip a, netstat -rn, |
という感じで。