我已离开 发表于 2009-4-24 11:31

LInux编程中的变量中有空格的问题  不知道我们论坛有没有懂的??

举个例子
一个文件夹中有几个文件 ,文件名有空格,,现在我要对每一个文件进行操作
3文件,他们的名字是
4314 dw
dwa .dwa
dwa adw.chm

我可以用for循环
name=`ls`
for i in $name
do echo \"$i\"
done
结果
输出的不是3文件,而是6行
4314
dw
dwa
.dwa
dwa
adw.chm
至于为什么,大家应该明白原因 所以我又试了一个这个样子的命令
for i in \"4314 dw\" \"wa .dwa\" \"wa adw.chm\"
do echo \"$i\"
done
输入结果就是3行
4314 dw
dwa .dwa
dwa adw.chm
我就耍了下小聪明,,用了下面的命令
name=`ls | sed 's/.*/\"&\"/g'`
echo $name
for i in $name
do echo \"$i\"
done
大家猜下结果会怎么样....
\"4314 dw\" \"wa .dwa\" \"wa adw.chm\"
\"4314
dw\"
\"wa
.dwa\"
\"wa
adw.chm\"
很明显name的值为\"4314 dw\" \"wa .dwa\" \"wa adw.chm\",我用name的值代入for循环,,我希望变量中的双引号起作用,,如果起作用,那么结果就会是
4314 dw
dwa .dwa
dwa adw.chm
但是变量中的双号不起作用,,
现在很多的文件夹的名字都有空格,这些空格最是郁闷,,因为我们的shell的命令是以空格作为分割,文件夹的名字有空格,就只有加双引号
但是我们把文件夹名字赋值给一个变量,在变量中 双引号就不起作用了 ,那么这个文件夹应该怎样用变量使用呢??????????? 目前我有一个十分麻烦的方法,,
for i in `ls | sed -n '='`
do name=`ls | sed -n $i\\p`
echo \"$name\"
done
结果
4314 dw
dwa .dwa
dwa adw.chm
虽然功能实现了,但是我觉得十分麻烦,,希望高手指点下,,最好是 直接用 for循环代入文件夹的名字 ,这样多好呢???????????????????????

zhsh1987 发表于 2009-4-24 11:33

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

我,不懂

neska 发表于 2009-4-24 11:36

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

我,也不懂········

ah5841201314 发表于 2009-4-24 11:45

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

顶顶,看看

ytrfreedom 发表于 2009-4-24 11:56

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

帮顶

DesertEagle 发表于 2009-4-24 15:18

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

鱼儿~试试这些方法~
(1)ls -Q
(2)先把空格转为其它字符~比如_
sed 's/ /_/g'
然后操作~完后再替换回来~
我现在用的E6~手头没Z6~测试结果告诉我~

咫尺or天涯 发表于 2009-4-24 15:57

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

呵呵,很高深啊,帮你顶了

jianying 发表于 2009-4-24 16:42

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

正在学SHELL当中,还帮不上忙

songweiwen 发表于 2009-4-24 21:01

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

for fname in /path/*
do
echo $fname
done

  _黑.字 发表于 2009-4-25 09:32

Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????

不懂啊.. 什么时候我才能懂啊..?
小虾不用z6了..?那我们没那么多软件用了..
页: [1] 2
查看完整版本: LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的??