mysql - Bash for 循环从 read -r 和 gnu 图中获取文件名和列

标签 mysql bash gnuplot

以下脚本的顶部部分效果很好,.dat 文件是通过 MySQL 命令创建的,并且与 gnuplot 完美配合(通过命令行)。问题是让底部(gnuplot)正常工作。我很确定代码中存在一些问题:变量和数组。我需要调用每个 .dat 文件(绘图),在图表中添加标题(来自customers.txt 中的标题)并将其命名为 (.png)

任何指导将不胜感激。非常感谢——RichR

#!/bin/bash
set -x

databases=""
titles=""
while read -r ipAddr dbName title; do
    dbName=$(echo "$dbName" | sed -e 's/pacsdb//')
    rm -f "$dbName.dat"
    touch "$dbName.dat"
    databases=("$dbName.dat")
    titles="$titles $title"
    while read -r period; do
    mysql -uroot -pxxxx -h "$ipAddr" "pacsdb$dbName" -se \
    "SELECT COUNT(*) FROM tables WHERE some.info BETWEEN $period;" >> "$dbName.dat"
    done < periods.txt
done < customers.txt

for database in "${databases[@]}"; do
gnuplot << EOF
        set a bunch of options
        set output "/var/www/$dbName.png"
        plot "$dbName.dat" using 2:xtic(1) title "$titles"
EOF 
done
exit 0

customers.txt 示例行- 192.168.179.222 pacsdbgibsonia“吉布索尼亚动物医院”

错误输出......

+ for database in '"${databases[@]}"'
+ gnuplot
     line 0: warning: Skipping unreadable file ".dat"
     line 0: No data in plot
+ exit 0

最佳答案

初始化数据库数组:

databases=()

将 $dbName.dat 附加到数据库数组:

databases+=("$dbName.dat")

要检索 dbName,请删除后缀模式 .dat

dbName=${database%.dat}

关于mysql - Bash for 循环从 read -r 和 gnu 图中获取文件名和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144867/

相关文章:

gnuplot x 标签在直方图中的位置

php - 如何在sql php中通过外键关系将数据插入到两个表中

php - 连接到另一个IP(服务器)上的MySQL,PHP

bash - 参数扩展后 zsh 未被 IFS 拆分

linux - Bash for 循环不能正确理解变量?

linux - 将粘贴 bash 命令输出的键盘快捷键

MySQL按两列顺序排列一次,有限制吗?

php - 数据库输出阻止图像

Gnuplot:如何为不同单位添加 y2 轴比例

background - Gnuplot - 如何更改按键背景的不透明度?