将bash脚本作为具有其他计算的sudo用户运行

时间:2018-04-27 18:45:22

标签: linux bash shell

我还有一些其他的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循环。不确定我的问题是什么?任何帮助表示赞赏。感谢

0 个答案:

没有答案