我正在使用php学习shell脚本
`#!/bin/bash BASEDIR=$(dirname $0) echo "BASE DIRECTOY $BASEDIR" ## get base directory echo "PRESENT WORKING DIRECTORY $PWD" ## get present working directory declare arr="`dir`" echo $arr for i in $arr do echo $i done`
我正在使用php脚本执行此shell脚本
`error_reporting(1); $output = shell_exec('sh shell.sh'); echo $output;`
所以当我在shell脚本中回显$ arr时,它的工作正常 但是当我在shell脚本中对同一个数组申请循环时,它不会打印文件名
BASE DIRECTOY .
PRESENT WORKING DIRECTORY /cygdrive/c/wamp/www/shell
Copy\ of\ shell.sh htaccess new phpshell.php shell.sh
我尝试了stackoverflow和互联网的所有答案,但没有一个解决方案正在运作。 我在wampserver和windows xp sp2上运行此代码。 我还安装了一个cygwin实用程序。我认为cygwin没有问题
任何帮助都将非常感谢....
答案 0 :(得分:2)
在phpshell.php中,首先要更改
$output = shell_exec('sh shell.sh');
到
$output = shell_exec('bash shell.sh');
旧的Bourne shell(sh)并不理解'声明'。我猜你得到了错误信息
shell.sh: declare: not found
另一种解决方法是从shell.sh中删除声明。
(你的列表看起来有点奇怪。为什么你用反向标记构建所有代码?)