1

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

file=/home/vikas/input.ksh

在我的代码中需要该文件中的某些内容,因此我正在通过执行类似这样的操作对该文件执行普通的 cat 和 grep

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

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

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

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

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

4

3 回答 3

4

尝试翻转你的斜线,Linux 使用/而不是\

于 2012-07-16T15:24:05.783 回答
3

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

file=/home/vikas/input.ksh

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

这是我们目前所知道的:

  • 他使用了正确的斜线。
  • 如果他对文件名进行硬编码,脚本就可以工作。
  • 脚本以不同的用户身份运行(我认为?)。

请指出脚本以哪个用户身份运行,并发布以下输出:

ls -l /home/vikas/input.ksh

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

于 2012-07-16T15:24:22.133 回答
0

是的,问题终于解决了,尽管我发现这个解决方案很奇怪并且无法理解它为什么会起作用。实际上我正在从其他文件中读取这个变量,它是这样的

file=$HOME/vikas/input.ksh 

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

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

file=$HOME$file 

之后我做了 cat $file 并且它起作用了

于 2012-07-17T09:03:03.600 回答