Запустите скрипт bash как пользователь sudo с некоторыми другими вычислениями - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть другой кусок скрипта bash, вызывающий некоторые внешние скрипты и работающий как пользователь sudo. Ниже приведен пример, который можно использовать в качестве образца для воспроизведения моей проблемы.

#!/bin/bash
databaseName=${1}
tableNames=${2}
IFS=','
read -r -a tableNamesArray <<< "${tableNames}"
#sudo su <<WRAPPER
echo "Tables inside ${databaseName} are ::: ${tableNamesArray[@]}"
echo "-- SQL FILE  --" > ${databaseName}_schema.hql
echo "$tableNames"
echo "${tableNamesArray[@]}"
for eachTable in "${tableNamesArray[@]}"
  do
    echo "$eachTable"
    echo "MY_QUERY $databaseName.$eachTable;" >> ${databaseName}_schema.hql
  done
#WRAPPER

Этот скрипт работает нормально. Я хочу mydb_schema.hql с некоторыми записями сценария SQL. Предположим, я называю это выше как ./sample.sh db table1,table2, чтобы получить файл SQL с запросами ниже-

-- SQL FILE  --
MY_QUERY db.table1;
MY_QUERY db.table2;

Выше работает нормально и получает все согласно моей необходимости. Вот моя проблема -

#!/bin/bash
databaseName=${1}
tableNames=${2}
IFS=','
read -r -a tableNamesArray <<< "${tableNames}"
sudo su <<WRAPPER
#..Other scripts that I need to call as sudo..
echo "Tables inside ${databaseName} are ::: ${tableNamesArray[@]}"
echo "-- SQL FILE  --" > ${databaseName}_schema.hql
echo "$tableNames"
echo "${tableNamesArray[@]}"
for eachTable in "${tableNamesArray[@]}"
  do
    echo "$eachTable"
    echo "MY_QUERY $databaseName.$eachTable;" >> ${databaseName}_schema.hql
  done
WRAPPER

Я использовал вот так, и я могу вызывать другие скрипты как sudo пользователь между кодами. Этот WRAPPER прекрасно работает для вызова других сценариев как пользователь sudo, но не может вызвать цикл for внутри WRAPPER. Не уверен, что проблема для меня? Любая помощь приветствуется. Спасибо

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