关于 路径存储成变量就找不到文件路径的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
tianmaxj
帖子: 6
注册时间: 2009-09-05 16:47

关于 路径存储成变量就找不到文件路径的问题

#1

帖子 tianmaxj » 2009-09-05 16:56

一个简单的问题

FILE_PATH='/temp/eth1.txt'
grep IPADDR $FILE_PATH

这样子 死活找不到路径
但是
grep IPADDR /temp/eth1.txt 却又可以正常输出

问题出在哪里啊? 各位大大!! 小生在此先谢过!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 关于 路径存储成变量就找不到文件路径的问题

#2

帖子 aerofox » 2009-09-06 7:02

十有八九是有某个地方输入错了。
如果文件路径名中没有特殊字符,那么执行

代码: 全选

echo grep IPADDR $FILE_PATH 
然后用鼠标拷贝输出结果到命令执行一下看看,如果没问题,再用光标键从历史记录中调用刚才那条命令,去掉 echo,我就不信会有问题。
tianmaxj
帖子: 6
注册时间: 2009-09-05 16:47

Re: 关于 路径存储成变量就找不到文件路径的问题

#3

帖子 tianmaxj » 2009-09-09 17:36

你看!我 在根目录下 建了个temp目录 然后g.sh是777权限的 我连cd都失败了
BMP 图像.JPG
附件
BMP 图像.JPG
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 关于 路径存储成变量就找不到文件路径的问题

#4

帖子 BigSnake.NET » 2009-09-09 18:54

太奇怪了, 把你的文件发上来看看
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 关于 路径存储成变量就找不到文件路径的问题

#5

帖子 aerofox » 2009-09-09 19:23

文件是 DOS 格式的吧?dos2unix g.sh 试试。
tianmaxj
帖子: 6
注册时间: 2009-09-05 16:47

Re: 关于 路径存储成变量就找不到文件路径的问题

#6

帖子 tianmaxj » 2009-09-09 19:45

aerofox 写了:文件是 DOS 格式的吧?dos2unix g.sh 试试。
太感谢了!!困扰了我好多天!!
因为是初学者 smb了虚拟机里面的文件夹 用windows的记事本创建文件!!!
vi创建就不会出现这问题了!


感觉有点奇怪!! 同样是文本文件为啥会不一样呐??
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 关于 路径存储成变量就找不到文件路径的问题

#7

帖子 aerofox » 2009-09-10 12:25

DOS/Windows的文本文件以 回车/换行符(^M^J) 结束一行,Linux 用一个换行符结束一行。所以,用 Windows 下的编辑器编辑脚本,到 Linux 下行尾就多了个 ^M。cd $FILE_PATH 实际上相当于 cd /temp^M^M,其中 ^M 是一个字符,表示 ASCII 码为 13 的字符(回车)。这样,bash 就会给出错误信息:

代码: 全选

./g.sh: line 3: cd: /temp^M^M: No such file or directory
但是,在显示时,^M 表示光标回到行首,所以,你看到的就是:

代码: 全选

: No such file or directory
如果你运行

代码: 全选

./g.sh >& g.log
用 vi 打开 g.log,应该能看到“隐藏”的字符。
tianmaxj
帖子: 6
注册时间: 2009-09-05 16:47

Re: 关于 路径存储成变量就找不到文件路径的问题

#8

帖子 tianmaxj » 2009-09-12 19:34

明白了!
谢谢大师!!!!
回复