bash - 松鼠脚本 - 空格问题 - 添加“空格”以传递给“回声”命令
问题描述
我有一个调用“回声”的松鼠插件。这几乎是正确的,但是尽管考虑了关于如何处理“空白”或元字符问题的 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 文件。问题似乎是围绕“>”或“>”本身的空白。
我已经尝试了几十种“ > ”的替代品,但没有一个奏效。如何创建一个“空间”来传递给它可以接受的脚本?谢谢。
解决方案
我设法解决了我遇到的这个问题。我发现“保持简单、愚蠢”,让插件处理一个参数是可行的方法。
我改变了插件如下:
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 脚本与“/usr/bin/”文件夹中的“printf”命令位于同一文件夹中。bash 脚本必须进入该文件夹,否则会出现“chdir”(更改目录)错误。
bash 脚本的内容是:
#!/bin/bash
FILE1=$1
sudo /usr/bin/printf "$FILE1" > "/home/pi/.attract/romlists/REMOVEFAVOURITE.temp"
基本上,游戏名称是“参数”,它从 squirrel 插件发送到 bash 脚本,然后将游戏名称(输出)重定向到文件“REMOVEFAVOURITE.temp”。
这种方法的好处是,无论游戏名称采用何种形式,例如使用单个撇号或 () 或 [],如“Sam's Journey (c64)”或“Sam's Journey [c64]”,脚本都会捕获它并通过它在。特殊字符没有区别。
从那里,我可以用“REMOVEFAVOURITE.temp”中记录的信息做任何我喜欢的事情。
推荐阅读
- laravel - Laravel vue - 错误删除 `␍` prettier/prettier ,可能可以使用 `--fix` 选项修复
- python - “TypeError:缺少 1 个必需的位置参数”实例错误
- android - 布局比我的屏幕大,但在模拟器上没问题
- sql - 如何在sql中使用group by、order by和where条件?
- laravel - 更新 vue 文件的变化 - Laravel Echo Pusher 通知
- python - python unittests的格式化测试失败
- xml - 有没有办法以 junit.xml 格式生成 Jest/Istanbul 覆盖率报告
- yii - Yii2 中如何使用查询
- android - undefined 不是评估 0 的函数,reactnavigation.createDrawerNavigator
- laravel - 如何在 Laravel 中集成 Paypal 支付网关?(我得到了错误)