我有一个Squirrel插件,如下所示:
fe.add_transition_callback( "removefavourite" );
function removefavourite( ttype, var, ttime )
{
switch ( ttype )
{
case Transition.ChangedTag:
print( fe.game_info( Info.Name ) + "n" );
system( "echo '" + fe.game_info( Info.Name ) + "' > /home/pi/.attract/romlists/ROMNAME.tmp" );
system( "printf '" + fe.game_info( Info.Emulator ) + "' > /home/pi/.attract/romlists/ROMNAME2.tmp" );
break;
}
return false;
}
fe.add_transition_callback( "removefavourite" )
我想将"print"命令的输出从终端/控制台重定向到一个文件。然而,我似乎无法做到这一点,如果有人能帮助我,我将不胜感激。
我在bash中尝试过替代方案——"echo"命令和"printf"命令的许多变体,但这些都不能有效地捕获包含括号()或单引号(如')的单词。"print"命令似乎在所有情况下都有效,但我无法重定向输出。
请注意,在将特殊字符发送到print、echo或printf之前,我无法通过转义/反斜杠来修改我首先捕获的单词。
谢谢。
我设法解决了这个问题。我发现"保持简单,愚蠢",让插件只处理一个参数是可行的。
我修改插件如下:
fe.add_transition_callback( "removefavourite" );
function removefavourite( ttype, var, ttime )
{
switch ( ttype )
{
case Transition.ChangedTag:
fe.plugin_command( "/usr/bin/printf1.sh", """ + fe.game_info(Info.Name) + """ );
system( "sudo /bin/bash /opt/retropie/configs/all/removefavourite.sh" ); // Starts the process of removing the game from Favourites.txt
}
return false;
}
fe.add_transition_callback( "removefavourite" )
这个插件将游戏名称发送到我创建的名为"printf1.sh"的新bash脚本中。bash脚本与"printf"命令位于"/usr/bin/"文件夹中的同一文件夹中。bash脚本必须进入该文件夹,否则会出现"chdir"(更改目录)错误。
bash脚本的内容包括:#/垃圾桶/垃圾桶FILE1=1美元sudo/usr/bin/printf"$FILE1">"/home/pi/.cract/romlists/REMOVEFAVOURITE.temp">
基本上,游戏名称是"自变量",它从松鼠插件发送到bash脚本,然后bash脚本将游戏名称(输出)重定向到文件"REMOVEFAVOURITE.temp"。
这种方法的好处是,无论游戏名称采用哪种形式,例如带有一个撇号或()或[],如"山姆之旅(c64)"或"山姆之行(c64])",脚本都会捕捉并传递它。特殊角色没有区别。
从那里,我可以用"REMOVEFAVURITE.temp"中记录的信息做任何我喜欢的事情