分页: 1 / 1

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

发表于 : 2009-09-05 16:56
tianmaxj
一个简单的问题

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

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

问题出在哪里啊? 各位大大!! 小生在此先谢过!

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

发表于 : 2009-09-06 7:02
aerofox
十有八九是有某个地方输入错了。
如果文件路径名中没有特殊字符,那么执行

代码: 全选

echo grep IPADDR $FILE_PATH 
然后用鼠标拷贝输出结果到命令执行一下看看,如果没问题,再用光标键从历史记录中调用刚才那条命令,去掉 echo,我就不信会有问题。

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

发表于 : 2009-09-09 17:36
tianmaxj
你看!我 在根目录下 建了个temp目录 然后g.sh是777权限的 我连cd都失败了
BMP 图像.JPG

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

发表于 : 2009-09-09 18:54
BigSnake.NET
太奇怪了, 把你的文件发上来看看

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

发表于 : 2009-09-09 19:23
aerofox
文件是 DOS 格式的吧?dos2unix g.sh 试试。

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

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


感觉有点奇怪!! 同样是文本文件为啥会不一样呐??

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

发表于 : 2009-09-10 12:25
aerofox
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,应该能看到“隐藏”的字符。

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

发表于 : 2009-09-12 19:34
tianmaxj
明白了!
谢谢大师!!!!