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