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循环代入文件夹的名字 ,这样多好呢???????????????????????
Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
我,不懂Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
我,也不懂········Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
顶顶,看看Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
帮顶Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
鱼儿~试试这些方法~(1)ls -Q
(2)先把空格转为其它字符~比如_
sed 's/ /_/g'
然后操作~完后再替换回来~
我现在用的E6~手头没Z6~测试结果告诉我~
Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
呵呵,很高深啊,帮你顶了Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
正在学SHELL当中,还帮不上忙Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
for fname in /path/*do
echo $fname
done
Re:LInux编程中的变量中有空格的问题 不知道我们论坛有没有懂的????
不懂啊.. 什么时候我才能懂啊..?小虾不用z6了..?那我们没那么多软件用了..
页:
[1]
2