2016-05-05 33 views
0

我的腳本錯誤「沒有這樣的文件或目錄」,「命令未找到」看到運行我的shell腳本

`sqlline.py tpxxx.entexxx.org <<END 

!outputformat csv 

!record /ap_data/DD3/Rawf/Raw_f_$1_$2.csv 

select column1,column2,column3,column4 from DD3_vxxv_$1.DD3_vv_RAW_DATA where v_id=$3 and period=$4; 

!record 

!quit 

END;` 

`sed -i '1d;$d' /ap_data/DD3/Rawf/Raw_f_$1_$2.csv; 

sed -i "s/'//g" /ap_data/DD3/Rawf/Raw_f_$1_$2.csv; 

cd /ap_data/D2O/RawDownload/ 

zip Raw_f_$1_$2.zip Raw_f_$1_$2.csv; 

scp Raw_f_$1_$2.zip [email protected]:/opt/cdar/common/D2O/TabUpload/; 

rm Raw_f_$1_$2.csv Raw_f_$1_$2.zip;` 

的內容上執行的腳本時:

./rawfile.sh: line 7: 0/?: No such file or directory 
./rawfile.sh: line 13: adding:: command not found 

的腳本給正確的輸出。但仍顯示錯誤,「沒有這樣的文件或目錄」,

我的文件權限是「未找到命令」:-rwxrwxrwx

+0

什麼是「避免」?這個問題需要更多的信息或關閉它。 – tgkprog

+1

顯示您的文件。 – 123

+1

錯誤在您的腳本中,而不是文件權限。 – monk

回答

1

你的腳本有圍繞兩個主要的可執行部分反引號。

反引號導致內部的內容在子外殼中執行並被替換回您的腳本。這意味着在你的情況下,你的腳本正在執行兩個命令。其中一個是第一個反引用表達式的輸出,另一個是第二個反引用表達式的輸出。

例如:

$ `echo hello` 
bash: hello: command not found 
$ `echo echo hello` 
hello 

這裏發生的是,第一echo命令生成代入您的命令行輸出,使得通過簡單的外殼評爲「你好」的命令行..這不一個命令。第二個命令行打印「echo hello」,這是一個有效的命令行,並計算出打印「hello」的內容。

從您的兩個主要語句中刪除反引號,並直接執行命令。

#!/bin/sh 

sqlline.py tpxxx.entexxx.org <<END 
!outputformat csv 
!record /ap_data/DD3/Rawf/Raw_f_$1_$2.csv 
select column1,column2,column3,column4 from DD3_vxxv_$1.DD3_vv_RAW_DATA where v_id=$3 and period=$4; 
!record 
!quit 
END 

sed -i '1d;$d' /ap_data/DD3/Rawf/Raw_f_$1_$2.csv 
sed -i "s/'//g" /ap_data/DD3/Rawf/Raw_f_$1_$2.csv 
cd /ap_data/D2O/RawDownload/ 
zip Raw_f_$1_$2.zip Raw_f_$1_$2.csv 
scp Raw_f_$1_$2.zip [email protected]:/opt/cdar/common/D2O/TabUpload/ 
rm Raw_f_$1_$2.csv Raw_f_$1_$2.zip 
相關問題