这个问题与 Bash 有关。以下是在终端中运行的情况:
url="http://user:[email protected]:80/"
echo $url | sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/'
终端输出:example.com
如何解决以下问题?
domain=$($url | sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/') # not working
echo $domain
答案1
管道的左侧必须是有效的 shell 命令,可将输出生成到 stdout。在 bash 中你也可以<<<
这样使用:
domain=$(sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/' <<< "$url")