内部の部分文字列を検索する:は、私たちが水銀URLのユーザ名を見つけるためにしようとしていたbashの変数
default = ssh://[email protected]//srv/hg/repo
ユーザ名が常に存在だと仮定し、私が思い付いた:
tmp=${a#*//}
user=${tmp%%@*}
がありますこれを1行で行う方法は?
内部の部分文字列を検索する:は、私たちが水銀URLのユーザ名を見つけるためにしようとしていたbashの変数
default = ssh://[email protected]//srv/hg/repo
ユーザ名が常に存在だと仮定し、私が思い付いた:
tmp=${a#*//}
user=${tmp%%@*}
がありますこれを1行で行う方法は?
bash自体の中にはありません。 sedのような外部ツールに委譲する必要があります。
ない水銀に精通し、しかし、あなたのURLを使用して、あなたは、2本のパイプで
echo 'ssh://[email protected]/srv/hg/repo' |grep -E --only-matching '\[email protected]' |cut --delimiter=\@ -f 1
おそらくない最も効率的な方法を行うが、働くことができます。
あなたはかなり多くの文を必要とするか、外部ツールを呼び出す必要があります。私はsedがこれに最適だと思います。
あなたの文字列は、このような変数であると仮定すると、sed -r -e 's|.*://(.*)@.*|\1|' <<< "$default"
:あなたが行うことができます
url='default = ssh://[email protected]//srv/hg/repo'
:
[[ $url =~ //([^@]*)@ ]]
次に、あなたのユーザ名がここにある:
echo ${BASH_REMATCH[1]}
これは動作しますBashバージョン3.2以上
改行の代わりに2つの操作の間にセミコロンを使用するのはカウントされますか? –