gpt4 book ai didi

linux - 转义 su -c 中的引号

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:36 28 4
gpt4 key购买 nike

我想将可能包含空格的路径传递给 .sh 脚本中的 su -c 命令:

su -c "xdg-desktop-menu install ${DesktopFile}" -m "${Username}"

$DesktopFile 是我需要转义的路径。我在 ""\" 和几个大括号中尝试了 ' 的许多变体,但我还没有想出解决方案。有趣的是, xdg-desktop-icon 工作正常,但 xdg-desktop-menu 死在空白处。有什么建议吗?

最佳答案

如果您使用的是 bash,printf '%q' 可用于在引号不足时转义特殊字符。

su -c "xdg-desktop-menu install $(printf '%q' "$DesktopFile") -m $(printf '%q' "$Username")"

请注意 $(printf...) 不需要引号,但 "$DesktopFile" 需要。该变量需要安全地传递给 printf,因此必须引用它。 printf '%q' 的输出保证不受分词和通配的影响,因此不需要引号。 (虽然,如果你想引用它,你可以。它需要在两边都使用 \"。)

关于linux - 转义 su -c 中的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40790841/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com