2012-07-16 257 views
0

在脚本(说myScript.ksh)我有一个包含文件路径的变量。猫无法打开文件

file=/home/vikas/input.ksh 

在我的代码从该文件中需要的东西,所以我做这样的事情

myVariable=`cat $file | grep "on this line" | cut -d"'" -f2` 

做一个正常的猫和grep对这个文件现在每次我启动myScript.ksh,我得到一个错误

cat: cannot open /home/vikas/input.ksh 

但是,如果我在终端direcly做同样的事情,我能看到文件input.ksh内容

我不知道我在做什么错,有人可以帮我吗?

+1

它是你的文件路径吗?你有没有试过/home/vikas/input.ksh? – Kasapo 2012-07-16 15:24:15

+6

“猫不能打开文件”他们没有对生拇指,换一个。 – vcsjones 2012-07-16 15:24:21

+0

@vcsjones也许我不应该,但加上一个傻笑因素 – Kasapo 2012-07-16 15:25:04

回答

0

耶最后的问题解决了,但我发现weired的解决方案,不明白为什么它的工作。其实我是从其它文件中读取此变量,它是这样的

file=$HOME/vikas/input.ksh 

的问题是与$ HOME我做什么,我从变量文件中删除$ HOME并补充说,再次这样做

file=`echo $file | awk 'BEGIN { FS="/"; OFS="/" } {$1=""; print $0}'` 

file=$HOME$file 

之后,我做了cat $文件,它的工作

3

尝试和翻转你的斜线,Linux使用的/代替\

+1

Wug.brofist(Miquel) – Wug 2012-07-16 15:26:37

3

使用正斜杠,而不是反斜杠

file=/home/vikas/input.ksh 

编辑:好了,这是没有问题的。

下面是我们知道在这一点上:

  • 他使用正确的斜线。
  • 如果他的硬编码文件名,脚本工作。
  • 脚本运行作为不同的用户(我想?)。

请注明脚本运行作为用户,和后期的输出:

ls -l /home/vikas/input.ksh 

此外,什么是file myScript.ksh输出?

+0

对不起,因为这个变量是由某个进程自动生成的,所以只有正斜杠。如果您对文件名进行硬编码,那么我不是在脚本 – 2012-07-16 15:28:39

+0

中手动编写它,它是否工作?这是否像大小写敏感的问题? – Wug 2012-07-16 15:30:47

+0

另外,您已复制并粘贴错误消息,对不对?你不只是重新输入它? – Wug 2012-07-16 15:33:40