如何使用PHP脚本的返回值在Bash中设置变量
实现方法
首先需要在Bash中提前声明options为关联数组,否则Bash会默认将其识别为索引数组,无法正确解析字符串类型的键名:
declare -A options
之后通过进程替换结合source命令,直接执行PHP脚本输出的赋值语句即可完成变量设置:
source <(php my_script.php)
赋值完成后可以直接读取数组验证效果:
# 输出结果为 one two three echo ${options[abc]} # 输出结果为 bar echo ${options[foo]}
注意事项
- 该方案仅可在你完全信任PHP脚本输出内容的场景下使用:
source会直接执行所有输入的内容,若PHP输出被植入恶意Bash代码,会直接在当前环境执行造成安全风险。 - PHP生成赋值语句时,需要确保值内的单引号已经正确转义,转义规则为将单个单引号替换为
'\'',避免Bash解析时报错。 - 如果你使用的Bash版本不支持进程替换,也可以用
eval实现,但安全风险更高,同样仅可在完全信任输出的场景下使用:eval "$(php my_script.php)"
内容的提问来源于stack exchange,提问作者youdsmedia
相关产品推荐
相关产品推荐

