У меня есть другой кусок скрипта 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
. Не уверен, что проблема для меня? Любая помощь приветствуется. Спасибо