Как перебрать вывод bash sqlcmd - PullRequest
0 голосов
/ 24 июня 2019

У меня есть SQLCMD в linux bash, который получает результаты SELECT, как я могу перебирать каждую строку и иметь возможность выбирать определенные столбцы, чтобы я мог использовать их для запуска команды bash на

В настоящее время я делаю SELECT и выводлю в файл csv, который работает нормально, но я бы предпочел найти способ не экспортировать, так как разрешения находятся в игре, и мне нужно выполнить все полностью в рамках одного скрипта

#!/bin/bash

sqlcmd -S DB_string -d DB -U USERNAME -P PASSWORD -Q \
"SET NOCOUNT ON SELECT * FROM dbo.microiopenvpn WHERE mode='create' ORDER BY id" -o "sqloutputCheckCreate.csv" -W -w 1024 -s"," -h-1
line_no=0
file=sqloutputCheckCreate.csv
line_no=$(awk '{x++} END {print x}' $file)
echo $line_no

#rowCount= sqloutputCheckCreate.csv | wc -l

if [ $line_no > 0 ]; then
    echo "SQL Has Entries"
    while IFS="," read -r d1 d2 d3 d4 d5 d6; do

      if [ -e "/etc/openvpn/clients/$d6.ovpn" ]; then
            echo "$d6 File exists"
            sqlcmd -S DB_string -d DB -U USERNAME -P PASSWORD -Q \ -Q "SET NOCOUNT ON UPDATE dbo.microiopenvpn SET mode='valid' WHERE id='$d1'" < /dev$                echo "Database Updated - Successfully"
      else
            echo "$d6 does not exist - Action Creation Script of $d6"
            ./executecreate.sh
      fi

    done < sqloutputCheckCreate.csv    
 else
    echo "Nothing there"
  fi

cp /dev/null sqloutputCheckCreate.csv

вышесказанное работает при экспорте во внешний файл csav, но мне нужно поместить экспорт sql в переменную и зациклить над этим - так что ничего внешнего - идеи?

1 Ответ

0 голосов
/ 24 июня 2019

Что-то вроде:

sqlcmd ... | while IFS="," read -r d1 d2 d3 d4 d5 d6
do
    :# stuff
done

или, альтернативно:

while IFS="," read -r d1 d2 d3 d4 d5 d6
do
    :# stuff
done < <(sqlcmd ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...