PHP&庆典; Linux的;编译我自己的功能

时间:2010-05-01 12:16:33

标签: php linux bash

我想创建自己的程序,但我不知道如何...例如我想制作一个典型的'Hello $ user'程序。

所以......

├── hi
│   ├── hi.sh
│   ├── hi_to.sh

hi.sh

#!/bin/bash
~/hi/hi_to.sh $1 

hi_to.sh

#!/usr/bin/php
<?php
    echo "\nHellO ".$argv[1]."\n";
?>

在终端中运行:

me:~/hi  
→ ./hi.sh User

HellO User

我的问题是:如何将所有这些文件编译成一个bash程序?

4 个答案:

答案 0 :(得分:1)

你没有。如果你想在一个脚本中使用它,那么你首先将它放在一个脚本中。

答案 1 :(得分:0)

我认为我们不理解这个问题,因为你可以像这样打电话给hi_to.sh:

./hi_to.sh user

它会像你想要的那样运行,摆脱第一个sh脚本。

答案 2 :(得分:0)

  1. 确保shebang行指向正确的php可执行文件
  2. 您无需调用脚本hi.php,只需将其命名为hi
  3. 即可
  4. 使您的脚本文件可执行(例如,通过chmod u+x path/to/hichmod a+rx path/to/hi,请参阅http://en.wikipedia.org/wiki/Chmod
  5. 确保该文件位于搜索PATH内,以查找应该使用您的脚本的用户/帐户(不输入绝对路径)

答案 3 :(得分:0)

我能看到这个'组合'的唯一方法是使用here-doc,这基本上会导致第一个脚本生成第二个脚本,然后执行它:

#!/bin/sh

cat << EOF > /tmp/$$.php
<?php
    \$string="$1";
    echo "\nHellO ". \$string ."\n";
?>
EOF

/usr/bin/php -q /tmp/$$.php
retval=$?

rm /tmp/$$.php

exit $retval

在该示例中,$1将扩展为第一个参数。我已经转义了其他变量(仅与PHP相关),PHP在运行时会扩展。 shell脚本中的$$只会扩展为脚本的PID,实际的临时文件将类似于/tmp/1234.phpmktemp(1)是一种更安全的方法,可以使临时文件名更能抵抗链接攻击和冲突。

它还将PHP的退出状态保存在retval中,然后在脚本退出时返回。

生成的文件看起来像这样(假设shell脚本的第一个参数是foo):

<?php
   $string="foo";
   echo "\nHello " . $string . "\n";
?>

这是一个关于如何使用bash编写其他脚本的讽刺演示,但至少证明了它的可能性。它是我能想到的“组合”(如你所示)你发布的两个脚本的唯一方法。