Bash script ล้มเหลว


0

ฉันมีสคริปต์นี้ มันทำงานได้ดีในระบบหนึ่ง แต่ให้ข้อผิดพลาดบางอย่างกับเครื่องอื่น

  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?
Neil Wightman

คำตอบ:


1

อื่น ๆ : ไม่พบ endif

สิ่งนี้และอื่น ๆ ล้วน แต่เป็น csh ข้อความผิดพลาด ยังไงก็เถอะคุณกำลังเรียก csh บนโฮสต์นั้นแทน bash. คุณจะต้องตรวจสอบระบบระยะไกลเพื่อค้นหาสาเหตุที่เกิดขึ้น บางคนอาจตั้งค่านามแฝงเพื่อเรียกใช้ csh แทนทุบตีหรือพวกเขาอาจแทนที่โปรแกรมปฏิบัติการทุบตีหรืออะไรบางอย่างตามสาย


ขอบคุณ Kenster สำหรับคำใบ้ของคุณ ดูเหมือนว่าจะเป็นปัญหา แต่ฉันไม่สามารถตรวจสอบได้ 'คุณจะต้องตรวจสอบระบบระยะไกลเพื่อค้นหาว่าทำไมถึงเกิดขึ้น บางคนอาจตั้งค่านามแฝงเพื่อเรียกใช้ csh แทนการทุบตี
sumit27
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.