Linux ./graph_rules.sh:line 86:2:unbound变量-Can';我做不到这一点

Linux ./graph_rules.sh:line 86:2:unbound变量-Can';我做不到这一点,linux,bash,scripting,rrdtool,cacti,Linux,Bash,Scripting,Rrdtool,Cacti,我是一个彻头彻尾的乞丐当它与bash脚本一起出现时,我仍然在学习第一步 现在尝试用这个脚本导出cacti的图形规则,但出于某种原因,它给了我 可变错误 以下是代码源: !/宾/巴什-欧盟 正如消息所说,在第86行中,您试图使用一个没有赋值的变量。我打赌变量是$2,因此您可能没有传递两个参数,代码也没有检查有效的输入。谢谢,我怎么会错过这个;)正如消息所说,在第86行中,您试图使用一个没有赋值的变量。我打赌变量是$2,因此您可能没有传递两个参数,代码也没有检查有效的输入。谢谢,我怎么会错过这个;)

我是一个彻头彻尾的乞丐当它与bash脚本一起出现时,我仍然在学习第一步

现在尝试用这个脚本导出cacti的图形规则,但出于某种原因,它给了我 可变错误

以下是代码源:

!/宾/巴什-欧盟
正如消息所说,在第86行中,您试图使用一个没有赋值的变量。我打赌变量是
$2
,因此您可能没有传递两个参数,代码也没有检查有效的输入。谢谢,我怎么会错过这个;)正如消息所说,在第86行中,您试图使用一个没有赋值的变量。我打赌变量是
$2
,因此您可能没有传递两个参数,代码也没有检查有效的输入。谢谢,我怎么会错过这个;)
cmd_export="mysql -N --batch -h ORIGIN_DBSERVER -uORIGIN_DBUSER -pORIGIN_DBPASS ORIGIN_DB"
cmd_import="mysql -h DEST_DBSERVER -uDEST_DBUSER -pDEST_DBPASS DEST_DB"
export _snmp_query_name='Disk_Space'
export _graph_type_name='Disk_Space'
export_rule_items() {
  $cmd_export -e "SELECT
        sequence,
        operation,
        field,
        operator,
        pattern
   FROM plugin_autom8_graph_rule_items
  WHERE rule_id = (
    SELECT id
      FROM plugin_autom8_graph_rules
     WHERE name = '${Disk_Space}'
    );" > rule_items.txt
}

export_rule_match() {
 $cmd_export -e "SELECT sequence,operation,field,operator,
 pattern
  FROM plugin_autom8_match_rule_items
 WHERE rule_id = (
    SELECT id
      FROM plugin_autom8_graph_rules
     WHERE name = '${Disk_Space}'
    )
   AND rule_type=1;" > rule_match_items.txt
}

export_rule() {
 x="$($cmd_export -e "SELECT q.name,g.name
 FROM   plugin_autom8_graph_rules as rule
  JOIN  (snmp_query as q,snmp_query_graph as g)
    ON  (rule.snmp_query_id=q.id
    AND rule.graph_type_id=g.id)
 WHERE  rule.name = '${Disk_Space}'")"
 IFS=$'\t' read -r _snmp_query_name _graph_type_name <<<"${x}"
}

create_rule() {
  if [[ -z "${_snmp_query_name:-}" || -z "${_graph_type_name:-}" ]]; then
    echo "missing snmp query name or graph type name, abort"
    exit 1
  fi
  $cmd_import -e "INSERT INTO automation_graph_rules(
      name,
      snmp_query_id,
      graph_type_id)
  VALUES (
  '${Disk_Space}',
  (SELECT id
     FROM snmp_query
    WHERE name = '${_snmp_query_name}'),
  (SELECT id
     FROM snmp_query_graph
    WHERE name = '${_graph_type_name}')
  );" || exit 1
}

import_rule_items() {
  $cmd_import -e "LOAD DATA LOCAL INFILE 'rule_items.txt'
  INTO TABLE automation_graph_rule_items
  (sequence,
  operation,
  field,
  operator,
  pattern)
  SET rule_id=(SELECT id from automation_graph_rules WHERE name='${Disk_Space}');"
}

import_rule_match() {
  $cmd_import -e "LOAD DATA LOCAL INFILE 'rule_match_items.txt'
 INTO TABLE automation_match_rule_items (sequence,operation,field,operator,pattern)
 SET rule_id=(SELECT id from automation_graph_rules WHERE name='${Disk_Space}'),
    rule_type=1;"
}


rewrite_rule_matches() {
  sed -e 's/host\./h./' -e 's/host_template\./ht./' rule_match_items.txt
}
echo -e "\nWarning: Read the code, understand the code, have backups, know how to fix."
echo -e "If this blows up, you're on your own. Proceed ?\n"

select proceed in \
  "Yes, I know what I'm doing." \
  "No." ; do
  [[ "$proceed" = Yes* ]] && break;
  exit 1
done

case $1 in
  export)
    export_stuff
    ;;
  import)
    import_stuff
    ;;
  transit)
    export_rule
    export_rule_items
    export_rule_match
    create_rule
    rewrite_rule_matches
    import_rule_items
    import_rule_match
    ;;
  *)
    echo "unknown operation $1, abort"
    exit 1
    ;;