- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IFS変数について詳しい方教えて!!)
レッドハットリナックス8.0でのIFS変数について
このQ&Aのポイント
- IFS変数について詳しく教えてください。私はレッドハットリナックス8.0を使用しています。IFS変数は単語の区切りを認識する変数で、空白とタブと改行が初期値として設定されています。しかし、他の文字を代入することもできます。
- スクリプトを実行すると、指定した区切り文字で文字列を区切り、変数に代入することができます。ただし、レッドハットリナックス8.0ではスクリプト実行時に区切り文字が空白に変換されてしまうようです。これは環境の違いによるものかもしれません。他の書き方や設定方法を試してみることをおすすめします。
- レッドハットリナックス8.0でのIFS変数についての問題に困っている方は、より詳しい情報を提供することで解決策を提案できるかもしれません。質問内容をもう一度確認して、必要な情報を含めて質問してみてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
これはbashの機能なので、ディストリビューションによる違いはまず無いでしょう。 構文の解析時にはIFSは使われません。もし使われるとしたら、IFS=/ としたら、 for/i/in/a/b/c;do/echo/$i/;done などと書かなければならなくなります。 IFS=/ for i in /abc///def/;do echo "$i";done とすればiには文字列がそのまま読み込まれていることが分かると思います。IFSによる分解はechoの引数の分割時にされていたわけです。 読んだ本が悪かったようですね。
お礼
notnotさん、ご返信ありがとうございます。 よく分かりました。 確かに構文解析時にIFSが使われるのだとしたら、 この本のように空白と/が混在した文は予期しない結果になってしまいますものね。 これは読者の評価欄を見てじっくり吟味して選んだ本なので残念です! 恐らくこの本の作者はスクリプトを実行せずに自信満々で掲載してしまったのでしょうね。 さらに、これは翻訳された本なので、翻訳者も間違えに気づかず、そのまま翻訳してしまったということだと思います。 私は信じ込みやすい正確なので、本が間違っているとなかなか解決できず、一苦労です!