我需要运行
eval“php /srv/www/scripts/mage/install-invoke-app.php”
它找到了文件,但最终得到了
正在弄乱<?php
关闭。为什么?这是怎么解决的?到目前为止谷歌搜索还没有得到正确的答案。
更新 简而言之,这是一个脚本,它是一个功能,然后我通过一个回调...有一些被剥离的只是区域。
包含base.sh脚本中的
cd /srv/www/
. scripts/install-functions.sh
#tons of other stuff
cd /srv/www/
. scripts/mage-install.sh
在install-functions.sh
中install_repo(){
if [ $2 ]
then
echo "just 1"
git clone $1 -q
else
echo "just 1 and 2"
git clone $1 $2 -q
fi
success=$?
if [[ $success -eq 0 ]];
then
echo "Repository successfully cloned."
echo "cleaning"
cd $r/
rm -rf LICENSE.txt STATUS.txt README.md RELEASE_NOTES.txt modman
cd ../
cp -af $r/* .
rm -rf $r/
if [ -z "$3" ]
then
echo "no callback"
else
eval $3
fi
else
echo "Something went wrong!"
fi
sleep 1 # slow it down to insure that we have the items put in place.
}
#declare -A list = ( [repo]=gitUser )
install_repolist(){
gitRepos=$1
for r in "${!gitRepos[@]}" #loop with key as the var
do
giturl="git://github.com/${gitRepos[$r]}/$r.git"
echo "Adding $r From $giturl"
if [ -z "$r" ];
then
echo
else
install_repo $giturl $2 $3
fi
echo
done
return 1
}
在scripts / mage-install.sh
中declare -A gitRepos
#[repo]=gitUser
gitRepos=(
[wsu_admin_base]=jeremyBass
[wsu_base_theme]=jeremyBass
[Storeutilities]=jeremyBass
[StructuredData]=jeremyBass
)
cd /srv/www/mage/
install_repolist $gitRepos 0 "php /srv/www/scripts/mage/install-invoke-app.php"
unset gitRepos #unset and re-declare to clear associative arrays
declare -A gitRepos
这是这里的基本循环..我需要回调函数,但是install_repolist也用于其他领域,所以我不能硬编码。如果有更好的方式然后eval,酷
答案 0 :(得分:0)
您的脚本中仍有一些部分我不理解,或者确定它确实无法正常工作,但关于您的问题,我认为您的回调只有在您将其置于以下函数上时才能正常工作:
function mycallback {
php /srv/www/scripts/mage/install-invoke-app.php
}
并将您的install_repolist
功能称为
install_repolist $gitRepos 0 mycallback
这应该使你的php命令调用文件参数工作,但有一件事:我不认为gitRepos
的值实际上可以像那样传递。
代码的大多数部分都包含实际需要引用双引号""
的变量。它的一个问题是你的php命令最终会在最终的位置结束,它作为一个单独的参数php
执行,而不再由于文字拆分而与文件一起执行。