使用shell脚本迭代数组并使用php打印它

时间:2014-10-13 18:20:19

标签: php shell

我正在使用php学习shell脚本

shell.sh

`#!/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脚本

phpshell.php

`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没有问题

任何帮助都将非常感谢....

1 个答案:

答案 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中删除声明。

(你的列表看起来有点奇怪。为什么你用反向标记构建所有代码?)