【问题标题】:Parameter passing from PHP to shell从 PHP 到 shell 的参数传递
【发布时间】:2019-03-02 18:51:38
【问题描述】:

是否可以将参数从 php 传递到 shell 脚本。 例如:

<?php

$var = "testfolder";

shell_exec('sh /path/test.sh');

?>

Shell 脚本(test.sh):

sudo mkdir $var /path/

我希望将 php $var 中的值导出到 shell 脚本,以便能够创建一个名称与变量中相同的文件夹。 这可能吗?

我已经知道如何将变量插入到字符串中,但我不知道如何重写 shell_exec 行以将此变量导出到我的 shell 脚本

谢谢!

【问题讨论】:

  • 是的,这是可能的。你传递给shell_exec() 的只是一个普通的字符串。只需像在任何其他字符串上一样连接或使用变量插值。
  • 如何编辑此行以传递值 $var
  • 字符串互译(双引号):"mkdir $var"。串联:'mkdir ' . $var。选择你最喜欢的。您还应该 read the manual 关于 PHP 中的字符串。
  • 谢谢,我知道如何使用上面的链接将$var 插入到我的字符串中。但我不知道如何重写shell_exec 行以便将变量$var 导出到我的shell 脚本。

标签: php shell parameter-passing


【解决方案1】:

是的。您需要将变量作为参数传递给 shell 脚本,而 shell 脚本必须读取其参数。

请查看此链接:passing a variable from php to bash

【讨论】:

    【解决方案2】:

    将变量作为命令行参数传递给 shell 脚本。例如:

    <?php
    $var = "testfolder";
    echo 'php: ' . shell_exec("sh ./test.sh $var");
    
    #!/bin/sh
    echo "shell: $1"
    
    $ php test.php
    php: shell: testfolder
    

    (为了清楚起见,我只是在这里附和。)

    Shell 将命令行参数依次转换为变量$1$2 等。

    【讨论】:

    • $1 正在存储 php: testfolder 。如何删除php: ?我只需要testfolder
    • 从 echo 中删除 'php: ' .
    猜你喜欢
    • 2018-04-22
    • 2012-02-12
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2023-03-24
    相关资源
    最近更新 更多