我正在创建一个项目来显示不同wms的键绑定,但是我总是在rofi中得到这个错误,或者可能是由于printf。
Mode r} bspc {quitwm r}
' is not found它试图使用printf和子进程显示的行。
super + alt + {q ,r} # I reckon the comma is causing the error
bspc {quitwm r}代码:
subprocess.run(f"rofi -modes \"{rofi_modes}\" -show {args.env[0]} -sidebar-mode", shell=True) 其中rofi_modes是使用另一个函数生成的字符串:
bspwm:"printf" 'super + alt + {q ,r} bspc {quitwm r}
',我确信{q .r}中的逗号造成了这种情况,但我不知道如何解决它--我尝试了不同的方法,但没有起作用
任何帮助都将不胜感激。
我试着在rofi_mode字符串中引用逗号,但没有起作用
发布于 2022-12-02 12:53:55
您所看到的错误消息可能是由于您在代码中使用的printf命令中的逗号造成的。在Bash中,逗号用作命令分隔符,因此shell试图将逗号后面的文本作为单独的命令处理。
要解决这个问题,您可以在printf命令中使用反斜杠()来转义逗号。这将告诉shell将逗号视为常规字符,而不是命令分隔符。
下面是如何修改代码以转义printf命令中的逗号的示例:
rofi_modes = bspwm: "printf 'super + alt + {q \,r} bspc {quitwm r}'"subprocess.run(f"rofi -modes "{rofi_modes}“-show {args.env} -侧边栏-模式”,shell=True)
这将修复您所看到的错误,并允许正确执行printf命令。
https://stackoverflow.com/questions/74656049
复制相似问题