【问题标题】:Bash escape characterBash 转义字符
【发布时间】:2020-11-19 08:13:19
【问题描述】:

我有一个非常简化的 bash 命令示例,我希望 $ 符号在其中转义。 所以命令:

su -m user -c "echo $test"

应该打印出来:

$test

不幸的是,一个简单的 \$test 不起作用。我尝试了很多其他的东西,但仍然找不到解决方案。有什么建议吗?

【问题讨论】:

    标签: linux bash shell escaping character


    【解决方案1】:

    用单引号代替双引号。

    su -m user -c 'echo \$test='
    

    单引号防止变量被原始外壳扩展。然后反斜杠转义 su 运行的 shell 中的美元符号。

    Difference between single and double quotes in Bash

    在回复评论时,您可以切换到双引号以将单引号放入字符串中。

    su -m user -c 'echo \$test='"'1'"
    

    【讨论】:

    • 谢谢巴尔玛!我错过了一些重要的事情。当我想要 $test='1' 作为结果时如何表达它? su -m user -c 'echo \$test=\'1\'' 不起作用
    • 再次感谢,但输出仍然只是 $test=1 ...我错过了什么吗?如果我将整个引号翻转到此: su -m user -c "echo "'\$'"test=\'1\'" 它可以工作并打印 $test='1'
    • cmets 中的代码很难阅读,请在其周围加上反引号以使其更具可读性。
    • 一般来说,嵌套命令行和嵌套引号和转义并不容易。有时您需要将反斜杠加倍或加倍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多