LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 931|回复: 7

怎么获取带有空格的参数?

[复制链接]
发表于 2003-5-17 16:46:25 | 显示全部楼层 |阅读模式
因为各个参数是以空格分隔的。所以当输入有空格的参数的时候,它就把它当作两个参数了,像part1\ part2。没法把他们当作一个整体处理。连“\”这个符号都捕捉不到。
怎么办?
发表于 2003-5-17 18:45:08 | 显示全部楼层
用引号括住。
发表于 2003-5-17 19:02:03 | 显示全部楼层
是不是用" "呢?,如:
javalee//home/javalee/lx>touch "c d" "d c"建立有空格的文件

javalee//home/javalee/lx>ls|grep " "
c d
d c
javalee//home/javalee/lx>file=$(ls|grep " ")
javalee//home/javalee/lx>for i in $file;do echo $i;done
c d
d c
 楼主| 发表于 2003-5-17 19:48:17 | 显示全部楼层
最初由 javalee 发表
是不是用" "呢?,如:
javalee//home/javalee/lx>touch "c d" "d c"建立有空格的文件

javalee//home/javalee/lx>ls|grep " "
c d
d c
javalee//home/javalee/lx>file=$(ls|grep " ")
javalee//home/javalee/lx>for i in $file;do echo $i;done
c d
d c


可能我没有表述清楚,是这样的:
testspace:
-----------------------------------------------------------
#!/bin/bash
#to test space followwing a '\' escape character
#
for i in $@
do
echo $i
done
exit 0
-----------------------------------------------------------

>./testsp./testspace "a b" "c d"
a
b
c
d
而不是我希望的"a b","c d"
>./testspace a\ b c\ d
a
b
c
d
也不行。
发表于 2003-5-17 19:52:46 | 显示全部楼层
我也正琢磨呢...我作的实验跟你一样! 继续努力!
发表于 2003-5-17 20:04:28 | 显示全部楼层
这样可以吧~~
javalee//home/javalee/lx>cat f
#!/bin/ksh
#
for i in "$@"
do
echo $i
done
exit 0

javalee//home/javalee/lx>f 'a b c' "a b c d " "c\\\b"
a b c
a b c d
c\b
javalee//home/javalee/lx>
 楼主| 发表于 2003-5-17 21:44:32 | 显示全部楼层
最初由 javalee 发表
这样可以吧~~
javalee//home/javalee/lx>cat f
#!/bin/ksh
#
for i in "$@"
do
echo $i
done
exit 0

javalee//home/javalee/lx>f 'a b c' "a b c d " "c\\\b"
a b c
a b c d
c\b
javalee//home/javalee/lx>


这样确实可以了,但是还想知道为什么
发表于 2003-5-17 23:43:27 | 显示全部楼层
见定位参数之$@和"$@"的区别!;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表