次のbashスニペットが機能しないのはなぜですか? [コピー]

次のbashスニペットが機能しないのはなぜですか? [コピー]

この質問は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

パイプの左側は、stdoutに出力を生成する有効なシェルコマンドでなければなりません。 Bashでは、次のものも使用できます<<<

domain=$(sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/' <<< "$url")

関連情報