ホーム > Uncategorized > [覚書](shなどの)シェルスクリプトでスペースや空白を含むファイル名を処理したい

[覚書](shなどの)シェルスクリプトでスペースや空白を含むファイル名を処理したい

2010年 5月 10日 コメントする コメントへ

ファイル名に空白とか入っているとファイル名のリストが入った引数とかをforで回したときに空白でファイル名が分割されちゃって期待した動きにならないよね。対策はフィールドセパレータ環境変数を設定するだけの事で具体的にはIFSに改行をセットすれば良い。下記はその例。

#!/bin/sh
IFS="
"
for FILE in *
do
  hoge $FILE
done

#!/bin/sh
IFS=\

for FILE in *
do
  hoge $FILE
done

重要なのはIFS変数をセットしている行の記述で\や”の前後のスペースとかタブに気をつけるという事。いうまでもないことだけど、改行だけをセットするように記述しましょう。

互換性の問題なのか知らんけどIFSやFS変数のデフォルト設定値が古く、今時の空白を含んだファイル名に対処できないというのはちと問題な気がするなあ。せっかくのシェル力が勿体ないよ。

  1. コメントはまだありません。
  1. mトラックバックがありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

フォロー

Get every new post delivered to your Inbox.