2

Mac OS X の bash で $IFS の値を変更すると問題が発生しました。たとえば、メイン ディレクトリが 1/XXX/XXX/XXXつ、サブディレクトリが 2 つsubdir1subdir2. シェルスクリプトを実行すると

maindir=/XXX/XXX/XXX;
subdirs=$(find $maindir -type d -maxdepth 1);
echo $subdirs

通常、私はこのような結果を得ます

/XXX/XXX/XXX/subdir1 /XXX/XXX/XXX/subdir2

これら 2 つのサブディレクトリは、Blankspace. $IFS問題は、次のような値を一度変更したときです。

OLDIFS=$IFS; 
IFS=$'\n';
IFS=OLDIFS;

その後、再度値を確認すると$subdirs

echo $subdirs

結果は

/XXX/XXX/XXX/subdir1
/XXX/XXX/XXX/subdir2

bash が自動的に に変わるBlankspace よう\nです。これは本当に気になります。\nに戻す解決策はありBlankspaceますか? 私のシステムは Mac OS X バージョン 10.7.5 です。

4

2 に答える 2

1

IFSを変更する必要がある場合は、サブシェルで行うと役立つことがよくあります。その後、サブシェルが終了すると、変更された IFS の値は消えます。例

set -- a b c
echo "main: $*"             # using default value of IFS
( IFS=:; echo "sub:  $*" )  # modify IFS in a subshell
echo "main: $*"             # previous IFS value restored

出力

main: a b c
sub:  a:b:c
main: a b c
于 2013-05-14T22:19:13.697 に答える