从php向bash传递数组参数

从php向bash传递数组参数,php,bash,shell,Php,Bash,Shell,我试图从shell_exec传递数组,并希望访问bash文件中的数组。我试图从许多网站上进行研究,但没有找到合适的解决方案。请帮我解决这个问题。提前谢谢 Php代码 $array= $countries_array; // Countries array from database shell_exec('sh get_countries.sh '.$array); Bash文件countries.sh 回声1美元 我了解bash文件中的数组: #!/bin/bash declare -a m

我试图从shell_exec传递数组,并希望访问bash文件中的数组。我试图从许多网站上进行研究,但没有找到合适的解决方案。请帮我解决这个问题。提前谢谢

Php代码

$array= $countries_array; // Countries array from database
shell_exec('sh get_countries.sh '.$array);
Bash文件countries.sh

回声1美元

我了解bash文件中的数组:

#!/bin/bash
declare -a myArray
myArray=("$@") 
for arg in "${myArray[@]}"; do
 echo "$arg"
done
但我很困惑,如何在bash文件中获取$array

同样,对于传递变量,请使用以下代码:

$var=shell_exec('sh get_countries.sh hello');
echo $var;
Bash文件==>

 echo $1
输出将是hello

回显'sh countries.sh'。加入('',$data)

输出==>


(6)6)6)6)6)6)C(6)6)6)6)6(4)6)6)6(7)6)6(6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)4CB6819DD5A-AA8-AA8-A8-A8-A8-A8-A8-A8-A8-A8-A8-A8-A8-A8-A8-A8-A8-8-E8-E8-E8-E8-E8-8-E8-E8-E8-E8-E8-E8-E8-E8-E8-6-6-7 7-7 7 7 7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-5-7-7-7-7-7-7-7-7-7-5-7-7-7-7-7-5-5-5-5-5-5-5-5-7-7-5-5-5-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-95B30-322f-5886-8eba-7272fb4f990f4)A-87A-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 EE5-56b7-a65a-d8dcf82386184.A7-A7-A7-A7-5289-A7-A7-A7-5289-A7-A7-A7-A7-7 7-A7-7 7 7-4 4 4-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 0EF16-921c-5fe1-ba69-79cf7c5ecff34.B-B-B-B-B-FFFFFFFFFFF6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 EEEEE4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 AD-5255-8011-177535b5979d8-E4-E4-E8-E4-E4-E4-E4-E4-E4-E4-E8-E4-E4-E4-E4-E4-E4-E4-E4-E4-E4 4 4-F4-4 4 4 4 4-4 4 4 4 4 4-4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 290 8a9beccd-86d9-5150-b4ab-624e007c359491c72559-f535-5067-9989-9e0095f97ce3 41147580-3444-5ace-9e67-1F060474FD b1cda433-3059-5240-b59b-91694336fc35 7d042de8-ed7a-5faf-9a16-2ae409e5a2f8 f116b2b7-490d-5451-abc3-1141868da92e 1f19bb92-23fc-5f2e-ac5e-bbc3f9965aeb

如果php变量数组是一个php字符串,则需要将其转换为php数组,例如:

 shell_exec('sh get_countries.sh '.join(' ',$array));
那么您的
国家/地区。sh
应该与您举的示例完全相同:

#!/bin/bash
declare -a myArray
myArray=("$@") 
for arg in "${myArray[@]}"; do
 echo "$arg"
done

请确保您允许使用
chmod a+rx countries.sh执行该文件

您能告诉我如何在shell中访问它吗,它现在正在工作,但我不知道如何在shell上访问它。echo$1正在工作,使用此=>shell_exec('sh get_countries.sh'.join(',',$array));你能帮我更新代码吗?shell用空格分隔参数,而不是逗号
。你为什么不想像我一样使用
join
和空格字符呢?我现在已经用空格分隔了,但是我怎么知道在bash中要使用多少索引变量呢。现在$1有一个值,$2有另一个值。它工作得很好。但是我应该如何在bash中绑定数组中的数据呢?命令
myArray=(“$@”)
将$1等复制到变量myArray中。然后,
$1
${myArray[1]}
相同
$#
是为shell命令提供的参数数。代码现在运行正常,问题在于权限。谢谢