Unix全般 -> シェル -> Bash

for 構文例

基本的な使い方

--- Shell 構文 ---
#!/bin/sh
for i in `cat /etc/group`
do
  echo $line
done

/etc/group ファイルの内容を1行づつ出力する

--- 標準出力内容 ---
root::0:
other::1:root
bin::2:root,daemon
sys::3:root,bin,adm
adm::4:root,daemon
uucp::5:root

行に空白が含まれる場合

--- Shell 構文 ---
#!/bin/sh
for i in `cat /etc/passwd`
do
  echo $line
done

/etc/passwd ファイルの内容を1行づつ出力したいが
行の途中に空白が含まれる場合途中で改行されて表示されてしまう。

--- 標準出力内容 ---
root:x:0:0:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line
Printer
Admin:/usr/spool/lp:

行に空白が含まれる場合の対策

--- Shell 構文 ---
#!/bin/sh

IFS="
"
for i in `cat /etc/passwd`
do
  echo $line
done

区切り文字変数 IFS に改行をセットする。
"" の終了はカラムの先頭に記述しなければならない。

--- 標準出力内容 ---
root:x:0:0:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:


IFSは環境変数である為、初期値"空白"以外を設定する場合は、
他に影響がある可能性があるので元の値に戻しておいたほうがよい。

IFS_BK=$IFS
IFS="
"

処理

IFS=$IFS_BK

      Document-Folder          一覧
HP-UX
HULFT
JAVA
JP1
JavaScript
Linux
MAC
PHP
Perl
Python
Ruby
SOA
Solaris
Unix全般
Windows
XML
エクセル
スタイルシート
セキュリティー
データベース
ネットワーク
パソコン
ブラウザ
プログラム構文
仮想化
          RSS-Folder
ニュース
   アットマーク・アイティ(@IT)
   シンクイット(ThinkIT)
   インターネットコム
   インターネットウォッチ
   日経IT-Pro
   日経パソコン
   CNET Japan
   ZD-NetJapan
   MYCOM
   RBB-Today
ベンダー
   日本IBM
   日本HP
   サンマイクロシステムズ
   NEC
   富士通
   日立
ソフトウェア
   マイクロソフト
   トレンドマイクロ
   オラクル
   サイボウズ
   Mozilla
   野村総合研究所
   (その他ソフトウェア企業)
更新履歴 一覧
 07/08 PERF
プログラム構文
 07/07 PERF
プログラム構文
 06/25 オブジェクトプログラミング2
Perl>サンプル
 07/12 クローン作成
仮想化>vCenter
 07/12 vyatta設定
ネットワーク>vyatta
 07/12 vyattaインストール
ネットワーク>vyatta
 07/12 リポジトリサーバ
Linux>サーバ構築
 07/05 VMwareのインストール
仮想化>VMware
 07/05 PXEブート
仮想化>KVM
 07/01 DHCPでのPXEブート
仮想化>KVM
 06/27 qcow2仮想DISK作成
仮想化>KVM
 06/13 NWの設定
仮想化>VMwareEsxi
 06/13 IPアドレスの変更
仮想化>VMwareEsxi
 06/12 自動ssh
Unix全般>シェル>Bash
 06/12 diffプログラミング
Python
Google