忍者ブログ
Admin / Write / Res
ちゃんとカテゴリ分けされておりませんので、 記事をお探しならブログ内検索が便利です。 ご活用くださいませー+.(≧∀≦)゚+.゚
ブログ内検索
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カウンター
アクセスカウンター
最新コメント
[11/22 รูปพวงหรีดแสดงความเสียใจ]
[11/22 ดอกไม้ งานศพ]
[11/22 ช่อดอกไม้ตามสั่ง]
[11/22 ร้านดอกไม้บรรยากาศอบอุ่น]
[11/21 Robertret]
最新トラックバック
プロフィール
+ハンドル+
y_ayamori(purple)
+職業+
IT系エンジニア
+すまい+
さいたま
バーコード
[598]  [597]  [596]  [595]  [594]  [593]  [592]  [591]  [590]  [589]  [588
Linuxでfor文やwhile文を実施したときに引数を自動で認識してくれます。
例えば・・・

---------------------------------------------
for i in 1 2 3 ; do
    echo ${i}
done
---------------------------------------------

するとプロンプトには
1
2
3
と表示されるので、for文に1と2と3が順番に入っていることがわかります。
と、いうことはfor文は「1」と「2」と「3」は別の文字であり、引数は3つと認識しているようです。
「1 2 3」というスペース混じりの一つの文字列とは認識されないんですね。

それでは「1」と「2」と「3」を別の文字だと区切っているものはなんでしょうか?
スペースですよね。
シェルはこの区切り文字をどのように認識されているのでしょうか?
それは$IFSという変数で持っています。
デフォルトではこんな感じ

---------------------------------------------
IFS=$' \t\n'
---------------------------------------------

スペースとタブと改行が入っています。
そのためfor文を実行したときに「1」と「2」と「3」は別々の引数として処理されました。

長くなりましたが、結論、区切り文字を変更したい場合は$IFS変数を変更すれば良いということです。

でわでわ


拍手

PR
この記事にコメントする
Name
Title
Color
Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (管理人にのみ表示)
この記事へのトラックバック
この記事にトラックバックする:
Copyright ©  アナログを愛するデジタル生活館 All Rights Reserved.
* material by Pearl Box   * Template by tsukika

忍者ブログ [PR]