2016-05-05 2 views
0

содержимое моего сценарияошибки «Нет такого файла или каталога», «команда не найдена» видел во время работы мой сценарий оболочки

`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

Что такое "Avoide"? этот вопрос нуждается в дополнительной информации или ее закрытии. – tgkprog

+1

Показать свой файл. Ошибка – 123

+1

в вашем скрипте, а не в разрешении файла. – monk

ответ

1

Ваш сценарий имеет обратные кавычки вокруг двух основных исполняемых секций.

Обратные кавычки заставляют содержимое внутри быть выполненным в подоболочке и заменены обратно в ваш скрипт. Это означает, что в вашем случае ваш скрипт выполняет две команды. Одним из них является вывод первого выражения с обратным отсчетом, а второй - выход второго выражения с обратной кавычкой.

Например:

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

То, что здесь происходит, что первая echo команда генерирует выходной сигнал, который подставляется в командную строку, делая командную строку оцененную оболочкой просто «привет» .. который не является команда. Вторая командная строка печатает «echo 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