免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2136 | 回复: 8
打印 上一主题 下一主题

反引号的问题求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-10 19:40 |只看该作者 |倒序浏览
以下是我的在命令行下测试,shell是bash,#号是命令提示符。

#A="a  b.txt"
#echo $A |sed 's/ /\\ /g'
a\ \ .txt
#B=`echo $A |sed 's/ /\\ /g'`
#echo $B
a  .txt


请问,为什么$B的值不是 a\ \ .txt   ?
我的问题来源主要是在处理某些带空格的文件名。

比如以下的代码执行错误.

file="a  b.txt"
if [ -f  $file ];then
    rm -f $file
fi

论坛徽章:
0
2 [报告]
发表于 2007-04-10 19:47 |只看该作者
办法1:

  1. file="a  b.txt"
  2. if [ -f  "$file" ];then
  3.     rm -f $file
  4. fi
复制代码


办法2:
表示'\'需要'\\'
所以sed替换用'\\\\'

论坛徽章:
0
3 [报告]
发表于 2007-04-10 19:53 |只看该作者
经测试, 使用 # B=`echo $A |sed 's/ /\\\\ /g'` 可以使得$B=a\ \ .txt;
但不是很明白;谢谢你的帮助.

论坛徽章:
0
4 [报告]
发表于 2007-04-10 20:20 |只看该作者
我想写一个for循环来处理当前目录下的文件,大致结构是

for  file  in  list
do
   .....

done

问题是如何生成list, 要求能处理具有空格的文件(目录)
以下是我的一个想法,经测试,失败,无法处理带空格的文件(目录)

for  file  `ls |sed 's/ /\\\\ /g'`
do
      if [ -f  $file ];then
            echo  "file"
      elif [ -d $file ];then
            echo  "diretory"
      fi
done

论坛徽章:
0
5 [报告]
发表于 2007-04-10 20:27 |只看该作者
for file in *

论坛徽章:
0
6 [报告]
发表于 2007-04-10 20:34 |只看该作者
俄.....,我举例列当前目录来做例子其实是想说明for循环中 list的中元素分割的问题,而不单单是为了解决我所谓的"对当前目录下的文件(目录)作操作" ;
for i in  a  b   c
do
  echo $i
done

for  i  in  a  "b  c"
do
      echo $i
done

for  i  in  a   b\ c
do
    echo $i
fi

论坛徽章:
0
7 [报告]
发表于 2007-04-10 20:39 |只看该作者
原帖由 shello 于 2007-4-10 20:34 发表
俄.....,我举例列当前目录来做例子其实是想说明for循环中 list的中元素分割的问题,而不单单是为了解决我所谓的"对当前目录下的文件(目录)作操作" ;
for i in  a  b   c
do
  echo $i
done

for  ...



我倾向使用while + read:

  1. ls | while read fn
  2. do
  3. #do sth...
  4. done
复制代码

论坛徽章:
0
8 [报告]
发表于 2007-04-10 21:12 |只看该作者
俄,谢谢楼上的热心帮助. 我问题不是ls的问题;
是for循环中list如何正确使用的问题;就是考虑到list当中有些词是有空格的;
还是举个例子哈

for  i   a  b\   c  (\后有一个空格,然后是c)
do
     echo "$i"
done
输出
a
b c   
--------------------------------------------
list="a   b\  c"
echo "$list"
for  i in $list
do
      echo "$i"
done
输出
a
b\
c
--------------------------------------------
为啥第二个for和第一个for输出不一样呢?

[ 本帖最后由 shello 于 2007-4-10 21:18 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2007-04-10 21:12 |只看该作者
原帖由 shello 于 2007-4-10 21:12 发表
俄,谢谢楼上的热心帮助. 我问题不是ls的问题;
是for循环中list如何正确使用的问题;就是考虑到list当中有些词是有空格的;



改IFS
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP