猫无法打开文件

时间:2012-07-16 15:22:22

标签: bash ksh

在一个脚本(Say myScript.ksh)中,我有一个包含文件路径的变量。

file=/home/vikas/input.ksh

在我的代码中需要来自该文件的内容,所以我通过做这样的事情来做一个正常的猫和grep这个文件

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

现在每次启动myScript.ksh时,都会出现错误

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

但如果我在终端上直接做同样的事情,我可以看到文件input.ksh的内容

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

file=/home/vikas/input.ksh

编辑:好的,这不是问题。

这就是我们现在所知道的:

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

请指明脚本运行的用户,并发布输出:

ls -l /home/vikas/input.ksh

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

答案 2 :(得分:0)

是的,最后问题解决了,虽然我找到了解决方案,并且无法理解为什么会有效。实际上我正在从其他文件中读取这个变量,它就是这样的

file=$HOME/vikas/input.ksh 

问题在于$ HOME我做了什么我从变量文件中删除了$ HOME并通过这样做再次添加

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

file=$HOME$file 

然后我做了cat $文件并且有效