使用while-read命令的每一行打印变量

时间:2017-08-11 14:43:31

标签: sql bash shell impala

我正在尝试设置一个监控脚本,该脚本将占用我们拥有的所有数据库,显示表格并在其上完成一些算术。
我有这个命令:

impala-shell -i impalad -q " show databases;" -B  | while read a; do impala-shell -q "show tables in ${a}" -B -i impalad; done

产生以下输出:

Query: show tables in database1
table1
table2

如何格式化输出以显示每个表的数据库名称($ a)?我尝试回应它或||但这只会在显示所有表格后打印数据库名称。或者有没有办法将变量传递给awk?
期望的输出将如下所示:

database1.table1
database1.table2

1 个答案:

答案 0 :(得分:2)

看起来tail -n +2命令的输出将有一个1行标题,后跟表名列表。 您可以通过管道到while跳过第一行, 然后使用另一个impala-shell -i impalad -q " show databases;" -B | while read a; do impala-shell -q "show tables in ${a}" -B -i impalad | tail -n +2 | while read table; do echo $a.$table done done 循环以所需格式回显数据库名称和表名称对:

$(document).on("change", "#PersonalInformation", function () {
  $('#Status').html("Saving...");
  $.ajax({
    url: 'Forms/Data.cfm',
    type: 'POST',
    data: $(this).serialize(), 
    success: function(data) {
      $('#Status').html(data);
    },
  });
});