相关疑难解决方法(0)

通过 XMLStarlet 取消 & 符号 (&) - Bugging &

这是一个相当烦人但更简单的任务。根据本指南,我写了这个:

#!/bin/bash

content=$(wget "https://example.com/" -O -)
ampersand=$(echo '\&')

xmllint --html --xpath '//*[@id="table"]/tbody' - <<<"$content" 2>/dev/null |
    xmlstarlet sel -t \
        -m "/tbody/tr/td" \
            -o "https://example.com" \
            -v "a//@href" \
            -o "/?A=1" \
            -o "$ampersand" \
            -o "B=2" -n \
Run Code Online (Sandbox Code Playgroud)

我成功地提取从表中的每个环节和一切都被正确地连接在一起,然而,而不是再现符号我收到这在每一个环节的结尾:

https://example.com/hello-world/?A=1\&amp;B=2
Run Code Online (Sandbox Code Playgroud)

但实际上,我正在寻找类似的东西:

https://example.com/hello-world/?A=1&B=2
Run Code Online (Sandbox Code Playgroud)

这个想法是使用反斜杠转义字符,\&以便它被忽略。最初,在这种情况下,我尝试将其直接放入-o "\&" \而不是-o "$ampersand" \删除ampersand=$(echo '\&')。结果还是一样。

本质上,通过删除反斜杠它仍然输出:

https://example.com/hello-world/?A=1&amp;B=2
Run Code Online (Sandbox Code Playgroud)

只是\后面的&amp;被删除了。

为什么?

我敢肯定这是缺少的基本知识。

bash shell escaping wget xmlstarlet

4
推荐指数
1
解决办法
923
查看次数

标签 统计

bash ×1

escaping ×1

shell ×1

wget ×1

xmlstarlet ×1