2012-07-16 305 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