2013-11-23 35 views
0

我试图通过在末尾添加一个条目,从而允许建立特拉维斯加入sqlite的文件路径来改变PHP配置文件:使用SED配置文件特拉维斯 - 建立

sh -c "if [ '$DB' = 'sqlite' ]; then sed -i "s/\?>/\$config['db']['path'] = 'sqlite.db3';\n?>/" etc/volkszaehler.conf.php; fi;" 

应导致配置文件结尾是这样的:

<?php 
//.. various other options 
$config['db']['path'] = 'sqlite.db3'; 
?> 

相反,一直运行到外壳的错误:

/home/travis/build.sh: line 222: /$config[db][path]: Permission denied 

或在Cygwin上:

sh:/etc/volkszaehler.conf.php; fi;: No such file or directory 

什么是正确的引用/转义达到目的?

+0

你在使用什么操作系统? –

+0

不确定:使用worker:worker-linux-5-2.bb.travis-ci.org:travis-linux-13(https://travis-ci.org/andig/volkszaehler.org/jobs/14411860) – andig

回答

1

您似乎有引用问题。我想尝试这样的事:

sh -c ' 
    if [ "$DB" = "sqlite" ]; then 
    sed -i "s/\?>/\$config[\'db\'][\'path\'] = \'sqlite.db3\';\n?>/" etc/volkszaehler.conf.php 
    fi' 

如果系统支持的话,我也想去掉sh -c和最外层的引号。

+0

无论出于何种原因,travis ci似乎都需要sh -c。最后结束于: \t sh -c“if ['$ DB'='sqlite']; then sed -i's/\?>/\ $ config ['\''db'\''] [ '\''path'\''] \ = \'''sqlite.db3'\''\ n?> /'etc/volkszaehler.conf.php; fi;“ from http://stackoverflow.com/questions/91110/how-to-match-a-single-quote-in-sed – andig