我输入的内容可能是dn3321
或
https://domaincom/file?tag=dn3321
,我正在尝试使用shell解析标记的值。
好像正则表达式可以解决问题,如果应用正则表达式提取值,并且不只是直接使用值,我将如何编写一个衬里来检测它是否为URL。
答案 0 :(得分:1)
从这个问题尚不清楚,可能的输入内容是什么样的,但是对于您给出的简单情况,可以使用parameter expansion:
#!/usr/bin/env bash
in1='dn3321'
in2='https://domaincom/file?tag=dn3321'
echo "${in1#*=}"
echo "${in2#*=}"
# prints "dn3321" twice
这可以通过删除第一个=
及其前面的任何文本来实现。
答案 1 :(得分:0)
如果只需要打印字符串的非常特定的部分(即网址),则可以这样操作:
#!/bin/bash
url="https://domaincom/file?tag=dn3321"
if [[ "$url" =~ "${http,,}" ]] ; then
tag=$(echo $url | cut -d'=' -f2)
fi
如果您需要更详细的说明,我可以举个例子。