用于更新sqlite数据库的Shell脚本

时间:2017-03-14 06:25:05

标签: sqlite shell

我在FreeBSD11上。我的系统上有一个或多个zfs池。我想要一个脚本来检查池状态并更新数据库,我的代码是:

pool=$(/sbin/zpool status | grep pool |awk '{print $2}')
for i in $pool
do

    status=$(/sbin/zpool status ${i} | egrep -i '(ONLINE|DEGRADED|FAULTED|OFFLINE|UNAVAIL|REMOVED|FAIL|DESTROYED|corrupt|cannot|unrecover)')

    sqlite3 <address>/my.db <<EOS
            update myTable set status = $status where name = ${i};

    EOS

    echo $status
   done 

此代码有错误,并且不会更新我的数据库。你能帮我搞清楚这个错误吗?

1 个答案:

答案 0 :(得分:0)

我在您的代码中看到两个问题:

  1. heredoc标记&#34; EOF&#34;不应缩进
  2. 您需要SQL中的单引号
  3. 将其重写为:

        sqlite3 <address>/my.db <<EOS
                update myTable set status = '$status' where name = '$i';
    EOS
    

    另见: