O problema aqui é que você está citando o comando entiore que você está tentando executar como uma única variável. Como resultado, você não está executando php
com foo.php
como argumento, mas está tentando executar um arquivo chamado php foo.php
. Veja um exemplo mais simples para mostrar o que quero dizer:
$ var1="echo "
$ var2="foo"
$ set -x ## debugging info
$ "$var1$var2"
+ 'echo foo' ### The shell tries to execute both vars as a single command
bash: echo foo: command not found
$ "$var1" "$var2"
+ 'echo ' foo ### The shell tries to execute 'echo ' (echo with a space)
bash: echo foo: command not found
Então, o jeito certo é remover o espaço e citar cada variável separadamente:
$ var1="echo"
$ var2="foo"
$ "$var1" "$var2"
Se você fizer isso, receberá o próximo erro. O .
é o source
command . Isso tenta ler um script shell e executá-lo na sessão atual. Você está dando um script PHP em seu lugar. Isso não vai funcionar, você precisa executar , não source .
Por fim, sempre evite usar nomes de variáveis CAPITAL. As variáveis reservadas do shell são capitalizadas, por isso é sempre bom usar nomes de variáveis em minúsculas para seus scripts.
Colocando tudo isso junto (com algumas outras pequenas melhorias), o que você quer é algo como:
#!/bin/sh
list="/path/to/my/site/dir"
config="/usr/bin/php"
for i in "$list"
do
"$config" "$i"/test.php
done