这是一个相当烦人但更简单的任务。根据本指南,我写了这个:
#!/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\&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&B=2
Run Code Online (Sandbox Code Playgroud)
只是\后面的&被删除了。
为什么?
我敢肯定这是缺少的基本知识。