日期:2014-05-16  浏览次数:20765 次

变量IFS两种赋值的区别
用命令set ¦ grep IFS 命令后显示如下: 
IFS=$' \t\n'  
那么上边的变量 
与  
IFS=' \t\n'  
的区别是什么? 谢谢!

------解决方案--------------------
用命令set ¦ grep IFS 命令后显示如下:
IFS=$' \t\n'
那么上边的变量

IFS=' \t\n'
的区别是什么? 谢谢
------解决方案--------------------
一个探究参数处理差别的函数


[ian@pinguino ~]$ type testfunc2
testfunc2 is a function
testfunc2 ()
{
echo "$# parameters";
echo Using '$*';
for p in $*;
do
echo "[$p]";
done;
echo Using '"$*"';
for p in "$*";
do
echo "[$p]";
done;
echo Using '$@';
for p in $@;
do
echo "[$p]";
done;
echo Using '"$@"';
for p in "$@";
do
echo "[$p]";
done
}
使用 testfunc2 打印参数信息


[ian@pinguino ~]$ IFS="|${IFS}" testfunc2 abc "a bc" "1 2
> 3"
3 parameters
Using $*
[abc]
[a]
[bc]
[1]
[2]
[3]
Using "$*"
[abc|a bc|1 2
3]
Using $@
[abc]
[a]
[bc]
[1]
[2]
[3]
Using "$@"
[abc]
[a bc]
[1 2
3]


仔细研究二者的差别,尤其要注意加引号的形式和包含空白(如空格字符和换行符)的参数。在一个 [] 字符对中,注意:“$*” 扩展实际上是一个词。

------解决方案--------------------
学习
------解决方案--------------------
在chinaunix也看到你的帖子。还是到这里来吧,呵呵。

其实我也不是很确定,不过可以给你一些线索。你看看下面三个命令之间的区别,我觉得也许有一定原因,不过暂时还没想到很参数分隔有关系。
echo '[ \n\t]'
echo $'[ \n\t]'
echo -e '[ \n\t]