【问题标题】:Passing the output of a variable to a command and running for command wthin a script将变量的输出传递给命令并在脚本中运行命令
【发布时间】:2015-01-15 00:42:13
【问题描述】:

试图找出 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. 在事件处理程序中,我想在检索到创建的域名后执行这个命令:

/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�$

请多多指教,谢谢!

【问题讨论】:

  • 你能粘贴一些代码吗,我不完全明白你想要什么。你试过什么?变量如何设置?通过执行some command &gt;&gt; some_file,所有标准输出将被追加到some_file。
  • 你好!感谢您的回复,并为您的困惑感到抱歉。这是我到目前为止尝试使用的命令: domainname="$NEW_DOMAIN_NAME" /usr/local/psa/bin/subscription --update-web-server-settings echo "$domainname" -nginx-serve-static true -nginx-serve-php true 我相信我可能执行不正确,因为它当然不起作用
  • 将代码添加到问题中。您可以在每行之前使用四个前导间隔对其进行格式化,以便于阅读!你的问题越清楚,别人回答的机会就越大!
  • 当然,感谢您的提醒! :) @ShellFish

标签: bash variables nginx echo plesk


【解决方案1】:

删除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 的内容作为命令行参数。这应该可以。

【讨论】:

  • 嗨,丹尼,感谢您的支持.. 请检查顶部的修订:)
猜你喜欢
  • 2018-01-11
  • 2011-10-13
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多