использование для в цикле с выходом sql - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть файл role.txt, который содержит

admin
user

SELECT ROLE_NAME FROM SENTRY_ROLE, где ROLE_NAME создает:

admin

Я пытаюсь отобразить все роли из role.txt, которыене находятся в sql_output (пользователь в этом примере).Вот что у меня есть:

for filename in roles.txt
do
sql_output=$(mysql -N -e "SELECT ROLE_NAME FROM SENTRY_ROLE WHERE ROLE_NAME = '$filename';") 


if [ -z "$sql_output" ]
then
  echo "sql_output is empty" #this is where i want to echo all the roles that are not in the output of sql_output AKA "user"
else
  echo "\$sql_output is in sql_output"
  fi
done

1 Ответ

0 голосов
/ 25 апреля 2018

Это не так, как вы перебираете строки файла.См. http://mywiki.wooledge.org/BashFAQ/001

Я бы сделал это с помощью одного вызова MySQL:

# Iassume this does not produce any extraneous output,
# just a list of role names, one per line
sql_output=$( mysql -N -e "SELECT distinct ROLE_NAME FROM SENTRY_ROLE" ) 

missing_roles=$( comm -23 roles.txt <(echo "$sql_output") )

См. http://manpages.ubuntu.com/manpages/bionic/en/man1/comm.1.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...