Shell script内部フィールド区切り記号(IFS)
3496 ワード
何によって各データを区分しますか:IFS
既定値は
したがって、
環境変数
上のスクリプトには
他のスクリプトを作成する場合は、フィールド区切り文字がデフォルト値であると判断して実行を続行した場合、結果は失敗します.
したがって、既存のIFS値を
フィールド区切り文字にはタイプ制限はありません.
次に、一般的なフィールド区切り記号を示します.
タイプ別に「n」を改行して区別する:コロンで区別する;セミコロンで区切る「大引用符で区切る......
その他のフィールド区切り記号は、
IFS(Internal Field Separator)
は、フィールド区切り記号として使用されるbash
Shellの文字リストを定義する特殊な環境変数です.既定値は
빈 칸
です.したがって、
states
ファイルの内容を以下に示すように作成します.$ cat states
A
B
C
D
E
F G
H I J
次のスクリプトを実行すると、異なる結果値が表示されます.$ cat test1
#!/bin/bash
for test in $(cat states)
do
echo "word: $test"
done
$ ./test1
word: A
word: B
word: C
word: D
word: E
word: F
word: G
word: H
word: I
word: J
最終的には줄바꿈
を基準に区分します.環境変数
IFS
を'\n'
に変更すればよい.$ cat test1
#!/bin/bash
IFS_OLD=$IFS
IFS=$'\n'
for test in $(cat states)
do
echo "word: $test"
done
IFS=$IFS_OLD
$ ./test1
word: A
word: B
word: C
word: D
word: E
word: F G
word: H I J
TIP上のスクリプトには
유용한 트릭
があります.IFS
の値のみが戻されずに変更された場合、この値はに設定されます.他のスクリプトを作成する場合は、フィールド区切り文字がデフォルト値であると判断して実行を続行した場合、結果は失敗します.
したがって、既存のIFS値を
IFS_OLD
に保存し、IFS
を変更して既存の値に戻すことができる.各種フィールド区切り記号
フィールド区切り文字にはタイプ制限はありません.
次に、一般的なフィールド区切り記号を示します.
タイプ別に「n」を改行して区別する:コロンで区別する;セミコロンで区切る「大引用符で区切る......
'\n'
の場合のみ、$
として指定されます.その他のフィールド区切り記号は、
IFS=$'\n'
、例えばIFS=:
として指定される.複数のフィールド区切りを同時に適用
$
、'\n'
、:
、;
、"
をフィールド区切り記号として一度に適用する場合は、次のように変数を割り当てることができます.IFS=$'\n':;"
Reference
この問題について(Shell script内部フィールド区切り記号(IFS)), 我々は、より多くの情報をここで見つけました https://velog.io/@khyup0629/shell-script-내부-필드-분리자IFSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol