[求助]如何转换这个字符串?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
bigsun
帖子: 301
注册时间: 2009-01-11 16:05

[求助]如何转换这个字符串?

#1

帖子 bigsun » 2010-04-20 4:30

请问想吧如下字符串:
/home/aaa bbb /home/ddd ccc /hobe/asdi /hobe/sdi aaa
转换成:
"/home/aaa bbb" "/home/ddd ccc" "/hobe/asdi" "/hobe/sdi aaa"
如何做最好?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: [求助]如何转换这个字符串?

#2

帖子 eexpress » 2010-04-20 8:41

碰到\<\/ 就加 “ ” 。再吧多余的去掉。尾巴上还加一个“
● 鸣学
头像
bigsun
帖子: 301
注册时间: 2009-01-11 16:05

Re: [求助]如何转换这个字符串?

#3

帖子 bigsun » 2010-04-20 11:17

压缩文件,要能处理带空格的文件

代码: 全选

#!/bin/bash
filename="$@"
#files=`echo "$filename"|sed 's/ \//" "\//g'|sed '/\//{s/^/"/;s/$/"/}'`
#files=`echo "$filename"|sed 's/ /\\ /g'|sed 's/\\ \// \//g'`
#file-roller -d "$files"
file-roller -d "$@"
注释掉的部分看上去正常,用起来有问题.最后用file-roller -d "$@"成功.不知问题出在哪里.
cosechy
帖子: 82
注册时间: 2008-03-06 4:56

Re: [求助]如何转换这个字符串?

#4

帖子 cosechy » 2010-04-20 22:22

变量里的\不会被当作转义字符,而且用引号包含的参数(除非带有$@之类的东西)不管怎么样都会被解释为一个参数,在这里就是把整个字符串当作一个文件名

最好就应该用$@,否则的话,要是有个目录名以空格结尾咋办?
回复