免费注册 查看新帖 |

Chinaunix

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

提问:碰到一个很奇怪的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-11 09:41 |只看该作者 |倒序浏览
在论坛里面看到有个人提了一个问题说将给定目录下的普通文件添加后缀.bak

  1. #!/bin/bash
  2. #modbak
  3. if [ -z $1 ]
  4. then
  5.   echo "Usage:`basename $0`:dir"
  6. fi

  7. if [ ! -d $1 ]
  8. then
  9.   echo "$1 is not a directory"
  10. fi

  11. for filename in `ls $1`
  12. do
  13.   echo "$filename"
  14.   if [ -f $filename ]
  15.   then
  16.     mv $filename $filename.bak
  17.     echo "ok"
  18.   fi
  19. done
复制代码

我这个脚本运行是碰到一个很奇怪的问题:比如我指定的是/tmp这个目录,就要在/tmp目录下运行这个脚本(脚本文件是/tmp/practise/modbak)才能得到正确的结果
如果是在/tmp/practise/modbak目录下使用./modbak /tmp运行无法得到正确的结果,不知道原因?

论坛徽章:
0
2 [报告]
发表于 2009-10-11 09:53 |只看该作者
ls $1
得到的是文件列表,不包路径

论坛徽章:
0
3 [报告]
发表于 2009-10-11 09:58 |只看该作者

回复 #2 haimming 的帖子

不是很明白你说的意思,我新手
我说清楚一点吧
我的脚本是/tmp/practise/modbak

  1. [root@localhost practise]# pwd
  2. /tmp/practise
  3. [root@localhost practise]# ./modbak /tmp/
  4. abs
  5. bb
  6. linux_unix
  7. practise
复制代码

bb是一个普通文件 没有将他添加后缀


  1. [root@localhost tmp]# pwd
  2. /tmp
  3. [root@localhost tmp]# /tmp/practise/modbak /tmp/
  4. abs
  5. bb
  6. ok
  7. linux_unix
  8. practise
  9. [root@localhost tmp]#
复制代码

这样又转换成功,因为打印了一个ok 为什么?

[ 本帖最后由 over12 于 2009-10-11 10:00 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-10-11 10:08 |只看该作者

回复 #3 over12 的帖子

在for 前加句"cd $1",试试

论坛徽章:
0
5 [报告]
发表于 2009-10-11 10:14 |只看该作者

回复 #4 haimming 的帖子

可以了 谢了
但是我还是不明白,为什么在for前面使用cd $1 改变路径后ls 可以得到正确的结果,而直接用 ls $1 可以打印出这个$1目录的文件列表,那说明filename可以得到正确的参数啊,为什么不能得到要的结果?

论坛徽章:
0
6 [报告]
发表于 2009-10-11 11:09 |只看该作者
原帖由 over12 于 2009-10-11 10:14 发表
可以了 谢了
但是我还是不明白,为什么在for前面使用cd $1 改变路径后ls 可以得到正确的结果,而直接用 ls $1 可以打印出这个$1目录的文件列表,那说明filename可以得到正确的参数啊,为什么不能得到要的结果?


ls $1 可以打印出这个$1目录的文件列表,但你最终用的是mv,必须是当前目录或带路径!

论坛徽章:
0
7 [报告]
发表于 2009-10-11 11:13 |只看该作者

回复 #5 over12 的帖子

2楼已经说的很清楚了,属于最最基础知识了吧

[root@Mylinux tmp]# ls /tmp/a
b.rmvb  ll  o.jpg  oo  ooo
[root@Mylinux tmp]# pwd
/tmp
[root@Mylinux tmp]# mv b.rmvb a.rmvb
mv: 无法 stat “b.rmvb”: 没有那个文件或目录

论坛徽章:
0
8 [报告]
发表于 2009-10-11 11:57 |只看该作者

回复 #6 ruifox 的帖子

理解了

论坛徽章:
0
9 [报告]
发表于 2009-10-11 13:37 |只看该作者
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP