2016-04-22 34 views
0

我有一個腳本讀取參數文件,並且將使用該腳本中每行的值執行一些操作。我的輸入文件有空格作爲分隔符。Unix腳本在讀取行時出現循環cat文件「沒有這樣的文件或目錄」錯誤

奇怪的是,它適用於舊版本的Linux,但不適用於較新的版本。

#! /bin/ksh 
su root "cat /var/opt/OV/tmp/HPOV_gg.log" | while read Line 
do 
    echo "${Line}" 
done 

Error: bash: cat /var/opt/OV/tmp/HPOV_gg.log: No such file or directory

的錯誤OBV是與新的Linux版本,以不同的方式解析cat命令。

我該如何解決這個問題?或者我可以重寫我的腳本,讓它在這個新的Linux版本上運行。

+1

你可以編輯你的問題,以包括'su root'的輸出ls -l /var/opt/OV/tmp/HPOV_gg.log「'? –

+0

[elp000161(root):/ root] su root「ls -l /var/opt/OV/tmp/HPOV_gg.log」 bash:ls -l /var/opt/OV/tmp/HPOV_gg.log:No such文件或目錄 這是問題。 我添加了一個像John建議的-c參數,現在它可以工作。 – Mathias1

回答

3

最好使用sudo以root身份執行命令。不需要引號,並且可以通過其配置文件以細粒度的方式控制sudo訪問。

sudo cat /var/opt/OV/tmp/HPOV_gg.log | while ... 

就這麼你知道,你可以通過編寫su root -c "cat file"來修復你的su命令。命令需要通過-c選項傳遞。但是,sudo更好。

相關問題