Puncte:-1

Cum pot selecta datele din mysql folosind scriptul bash și le pot trece la php?

drapel in

Asta încerc acum

În PHP rulez următorul sript:

exec('/home/user1/createinstanceinfolder.sh', $output, $return_var);

print_r($ieșire);

Care apelează următorul script Bash:

declare -A arr == $(sudo mysql -u root -h localhost -e "USE mydb;SELECT * FROM users")

pentru i în „${arr[@]}”
do
ecou „$i”
Terminat

PHP imprimă o matrice goală, ce este în neregulă aici?

drapel hr
Scriptul dvs. pare să nu aibă nici un shebang - sunteți sigur că php îl interpretează chiar cu bash? Ce vă așteptați exact să facă `declare -A arr == $( ...)`? ieșirea comenzii dvs. mysql este adecvată pentru atribuirea unui tablou *asociativ*? În orice caz, atribuirile de matrice ar trebui să arate ca `arr=( ... )`. De ce puneți lucruri într-o matrice, doar pentru a le repeta? Ai testat scriptul **în afara** de php?
drapel cn
De ce ai face asta folosind BASH și nu PYTHON? CU MULT mai ușor
Iosef avatar
drapel in
Iată cum arată acum scriptul meu bash #!/bin/bash declare -a arr = $(sudo mysql -u root -h localhost -e "USE mydb;SELECT * FROM users") pentru i în „${arr[@]}” do ecou „$i” Terminat Sunt nou în ubuntu, nu sunt sigur cum să-l testez în afara PHP. Ceea ce vreau să fac este să recuperez informațiile din mysql și să le returnez la PHP
Iosef avatar
drapel in
După preluarea acestuia, scripturile bash vor fi, de asemenea, responsabile pentru a crea foldere în var/www/mysite în funcție de fondul din baza de date. Vreau să păstrez site-ul meu cu 755 și, de asemenea, nu vreau să dau permisiunea de scriere serverului web, de aceea fac toate acestea în BASH
Iosef avatar
drapel in
Aceasta este ceea ce primesc în afara php: ./createinstanceinfolder.sh: line 7: declare: `=': nu este un identificator valid ./createinstanceinfolder.sh: linia 7: declara: `5': nu este un identificator valid ./createinstanceinfolder.sh: linia 7: declara: `111111111111': nu este un identificator valid ./createinstanceinfolder.sh: linia 7: declara: `[email protected]': nu este un identificator valid
Puncte:1
drapel in

Eu finanțez sintaxa corectă este:

#!/bin/bash

set -f # dezactivează globbing
IFS=$'\n' # setați separatorul de câmpuri la NL (doar)
arr=($(sudo mysql -u root -h localhost -e "USE mydb;SELECT * FROM users"))
 
pentru i în „${arr[@]}”
do
   ecou „$i”
Terminat

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.