【发布时间】:2015-12-19 16:30:09
【问题描述】:
我有一个 php 脚本和一个 bash 脚本。它们在同一个目录中。我正在从命令行运行 php 脚本,它将一个数组传递给 bash 脚本。我正在尝试执行以下操作:
- 将 PHP 数组传递给 BASH 脚本
- 从 STDIN 获取用户输入
- 将用户输入传回 PHP 脚本进行进一步处理
这是我的 php 脚本:
<?php
$a=array("red","green","blue","yellow");
$string = '(' . implode(' ', $a) . ')'; // (red green blue yellow)
$user_response = shell_exec('./response.sh $string');
// do something with $user_response
?>
BASH 脚本应该从 STDIN 读取数组并提示用户选择一个选项:
#!/bin/bash
options=$($1); # (red green blue yellow) but this isn't working
i=0;
echo "select an option";
for each in "${options[@]}"
do
echo "[$i] $each"
i=$((i+1))
done
echo;
read input;
echo "You picked option ${options[$input]}";
# here's where I want to pass or export the input back to the
# php script for further processing
当我运行 php 脚本时,它不显示数组选项。
【问题讨论】:
-
您不想将
$string作为其实际值传递吗?它目前作为字符串 $string 值传递。在shell_exec("./response.sh $string");中使用双引号,以便 PHP 可以解析它。至于 Bash 我不知道,所以我不会把它作为答案。 -
使用双引号时出现以下错误:
sh: 1: Syntax error: word unexpected (expecting ")") -
我知道您已经选择了一个答案,但我想知道您正在寻找的是否只是选择选项的能力,如果您可能对 PHP 脚本提示输入更感兴趣.
-
这正是我正在寻找的。我最初想在 BASH b/c 中进行提示,我知道我想如何格式化它并使它看起来不错,但后来我意识到在 PHP 脚本中完成这一切可能会更容易。我会试试你的解决方案。
标签: php arrays linux bash shell