ฉันมีสคริปต์นี้ มันทำงานได้ดีในระบบหนึ่ง แต่ให้ข้อผิดพลาดบางอย่างกับเครื่องอื่น
1 #!/bin/bash
2 EXEC_DIR=`dirname ${0}`
3 source ${EXEC_DIR}/config.sh
4
5 last_exec_date=$(cat $EXEC_DIR/$collector_temp | tail -1)
6
7 if [ -f $EXEC_DIR/$collector_temp ]; then
8 last_exec_date=$(cat $EXEC_DIR/$collector_temp | tail -1)
9 else
10 date +%s >> ${EXEC_DIR}/$collector_temp
11 last_exec_date=$(cat $EXEC_DIR/$collector_temp | tail -1)
12 fi
13
14
15 ssh $dns_ssh bash -c "'
16 count=1
17 any_query_file=${query_file_path}${query_file}*
18 last_exec_date=${last_exec_date}
19 qfiles_dns=${qfiles_dns}
20 today="'$(date +%Y%m%d)'"
21
22 for a in "'$any_query_file'"; do
23 if test -f "'$a'"; then
24 :
25 else
26 echo "No queries.log.* files found iin $query_file_path"
27 exit 31
28 fi
29 done
30
31 for b in "'$any_query_file'"; do
32 time_stamp="'$(stat -c "%Z" $b)'"
33 if [[ "'$time_stamp'" -ge "'$last_exec_date'" ]]; then
34 file_rename="'$(printf "%s""%s""_%03d" '${query_file}' "$today" "$count" )'"
35 awk "'"{ if (NR % 10 == 0) print }"'" "'$b'" > "'$qfiles_dns/$file_rename'"
36 let count=count+1
37 fi
38 done
39
40 if [[ "'$count'" = "'1'" ]]; then
41 echo "'No new "'$query_file'" files found on "'$dns_ssh'" '"
42 exit 32
43 fi
44 '"
45
46 #### SUMIT
47
48 exit 12
49
50 #### SUMIT
51
มันทำให้ฉันมีข้อผิดพลาดนี้:
ไม่ตรงกัน '
count = 1: ไม่พบคำสั่ง
any_query_file = query.log. *: ไม่ตรงกัน
last_exec_date = 1419574736: ไม่พบคำสั่ง
qfiles_dns =: ไม่พบคำสั่ง
ชื่อตัวแปรที่ผิดกฎหมาย
any_query_file: ตัวแปรที่ไม่ได้กำหนด
a: ตัวแปรที่ไม่ได้กำหนด
อื่น ๆ : ไม่พบ endif
ค่าบางอย่างในตัวแปรนั้นได้มาจากสคริปต์อื่น สิ่งที่อาจเป็นข้อผิดพลาด? มันทำงานได้ดีบนเครื่องอื่น
dns_ssh
collector_temp
etc?