【发布时间】:2019-01-08 13:05:40
【问题描述】:
我有一个调用“回声”的松鼠插件。这几乎是正确的,但是尽管考虑了关于如何处理“空白”或元字符问题的 stackoverflow 上的各种响应(以及其他与 unix 相关的站点),但我无法获得“回声”工作。
松鼠插件如下:
fe.add_transition_callback( "removefavourite" );
function removefavourite( ttype, var, ttime )
{
switch ( ttype )
{
case Transition.ChangedTag:
fe.plugin_command( "/bin/echo", "\"" + fe.game_info( Info.Name ) + "\"" + " > " + "\"" + "/home/pi/.attract/romlists/REMOVEFAVOURITE.temp\"");
return false;
}}
我收到的错误如下:
The parameter word expansion failed. ["Sam's Journey (Easyflash)" > "/home/pi/attract/romlists/REMOVEFAVOURITE.temp"].
代码有效地将输出传递到终端。但是,它不会将输出重定向到 REMOVEFAVOURITE.temp 文件。问题似乎是围绕“>”或“>”本身的空白。
我已经尝试了几十种“ > ”的替代品,但没有一个奏效。如何创建一个“空间”来传递给它可以接受的脚本?谢谢。
【问题讨论】:
-
你在哪里调用
bash?/bin/echo不是bash,它是一个单独的程序(bash有自己的内置函数echo)。 -
当然
>是一个shell 元字符,但您似乎没有在任何地方运行shell。您是否尝试过使用/bin/bash -c echo .....? -
谢谢。我是新手。我已经更改了问题,删除了对 bash 的引用。我还没有尝试过 /bin/bash 命令。老实说,我发现 squirrel 脚本很难在不出现错误的情况下进行更改。在保留 /bin/echo 命令的同时,我可以对代码进行一些其他更改吗?
-
(抱歉耽搁了,我们可能在不同的时区)。问题是您需要重定向功能
>,这是bash和其他shell 使用的功能,它不是echo的功能。所有echo都会写入标准输出流。我对squirrel一无所知,因此无法就此提供建议,但我真的会尝试使用/bin/bash -c echo...而不是/bin/echo。 -
谢谢。这肯定是时区问题。我用“/bin/bash -c echo”替换了“/bin/echo”,但还是出现了单词扩展错误。当我从命令行使用“/bin/bash -c echo”时,它确实创建了 REMOVEFAVOURITE.temp 文件,但没有内容。但是,如果我只使用“echo”代替它,它将创建包含内容的文件。
标签: bash echo whitespace space squirrel