将变量的输出传递给命令并在脚本中运行命令

时间:2015-01-15 00:42:14

标签: bash variables nginx echo plesk

试图找出Plesk的这种令人困惑的编码。 Plesk在其系统中提供事件处理程序和预先制作的变量。 (Plesk事件处理程序文档:http://download1.parallels.com/Plesk/PP12/12.0/Doc/en-US/online/plesk-administrator-guide/index.htm?fileName=67897.htm

简而言之,我正在尝试为创建新域的客户启用nginx,使用创建的域(变量名称:NEW_DOMAIN_NAME)变量自动将输出“粘贴”到特定命令中,然后输入命令要自动运行。这是它的工作原理:

  1. 客户选择创建域,这会触发事件处理程序
  2. NEW_DOMAIN_NAME是检索客户输入的域名(让我们使用domain.com)的变量
  3. 在事件处理程序中,我想在检索创建的域名后执行此命令:
  4. / usr / local / psa / bin / subscription --update-web-server-settings domain.com -nginx-serve-static true -nginx-serve-php true

    为了检索域名,我假设您使用了echo $ NEW_DOMAIN_NAME。出于某种原因,我根本无法使用它。我所知道的是当你回应$ NEW_DOMAIN_NAME>> /tmp/testfile.log输出打印domain.com并保存文档。

    我在plesk事件处理程序的命令行中尝试的编码如下:

        domainname="$NEW_DOMAIN_NAME"
    
    /usr/local/psa/bin/subscription --update-web-server-settings echo "$domainname" -nginx-serve-static true -nginx-serve-php true
    

    当请求Plesk论坛的支持时,遗憾的是他们不想出于某种原因提供适当的代码。但这是他们的回应:

    “你必须在你的命令中定义你想要的变量”NEW_DOMAIN_NAME“ - 订阅实用程序默认不知道这个,因为该变量不会在任何参数定义中用于此实用程序。”

    以下是订阅实用程序文件显示的内容:

        #!/opt/psa/bin/sw-engine-pleskrun
    <?php
        die("The file {$_SERVER['SCRIPT_FILENAME']} is part of Plesk distribution. $
        __sw_loader_pragma__('PLESK12');
    ?>
    �v�9�9x^M��ƇTH�ڇh��u-2п��(���F^NؿA^Q�^U�UѺ=X ^]^N����
    Em�I�VtQh$������֞<T^T��)H�I^N<^LK})[A�^\��+c�^?��AҖˇҁ]�%�^_.�ށF؁ɁUāk,�$ү�Ưw�w^^K�$
    

    请指教,谢谢你们!

1 个答案:

答案 0 :(得分:0)

删除echo,不要将$NEW_DOMAIN_NAME分配给$domainname;只需使用$NEW_DOMAIN_NAME本身:

/usr/local/psa/bin/subscription --update-web-server-settings "$NEW_DOMAIN_NAME" -nginx-serve-static true -nginx-serve-php true

shell将$NEW_DOMAIN_NAME的内容作为命令行参数。这应该有用。