変えてみましたIFS
(内部フィールド区切り記号)ファイル処理のために文字をコンマに変換しましたが、驚くほどIFS
変わりませんでした。
コマンドと出力の順序は次のとおりです。
mtk4@mtk-laptop:~$ echo .$IFS.
. . # A space
mtk4@mtk-laptop:~$ IFS="," # No error was thrown, no message
mtk4@mtk-laptop:~$ echo .$IFS.
. . # Again echo'd it, but no change
教えてください。ここで何の問題がありますか?
答え1
$variable
IFSは、aが引用符なしで拡張されるときに区切り文字としても使用されます。つまり、変更しましたが、2 点間の区切り記号として扱われます。また、echo
コマンドは$ IFSが何であるかを知らず、知っていても出力パラメーターの間に入れないので、スペースがあります。努力するecho ".$IFS."
答え2
書式指定子とともに組み込まれたコマンドを使用して、変数の値を確認できますbash
(参考資料を参照)。printf
%q
IFS
help printf
printf '%q\n' "$IFS" # $' \t\n'
# alternative, as already suggested by jw013
printf '%s' "$IFS" | od -A n -t x1 | xargs # 20 09 0a