シェルプログラミングの新機能です。文字列から部分文字列を抽出します。
私はそのように見ているDB接続のString表現があります。
<user>:<password>@<host>
をそして私は文字列から各属性(ユーザー、パスワード、およびホスト)を抽出したいと思います。それを行うには
シェルプログラミングの新機能です。文字列から部分文字列を抽出します。
私はそのように見ているDB接続のString表現があります。
<user>:<password>@<host>
をそして私は文字列から各属性(ユーザー、パスワード、およびホスト)を抽出したいと思います。それを行うには
素朴な方法は、次のようになります。「:」または「@」文字、またはあなたのホストがに発生した場合
明らか$ IFS=:@ read -a args <<< "<user>:<password>@<host>"
$ echo ${args[0]}
<user>
$ echo ${args[1]}
<password>
$ echo ${args[2]}
<host>
ユーザー名やパスワードを含めることができる場合、これは動作しません。 IPv6アドレスにする;)。
バッシュの文字列操作は、次のように行うことができます。
input="<user>:<password>@<host>"
colonPos=$(expr index "${input}" ':')
atPos=$(expr index "${input}" '@')
user=${input:0:$colonPos-1}
pass=${input:$colonPos:$atPos-$colonPos-1}
host=${input:$atPos}
echo -e "input: ${input}\nuser: ${user}\npass: ${pass}\nhost: ${host}"
それはまた、多くの:
および/または@
で動作しませんが、あなたがで遊ぶことができます。
tmpStr="${input//[^\:]/}"
colonAmount=${#tmpStr}
tmpStr="${input//[^@]/}"
atAmount=${#tmpStr}
echo -e "colon(s) amount: ${colonAmount}\nat(s) amount: ${atAmount}"
のは、一緒にプレイしてみましょうif then elif else fi
これらの*Amount
変数を使用して、独自のパーサをbashで開発してください!
上に、ありがとうございます。そしてyes、uidとpwdには区切り文字が含まれません – Joly
配列を必要としない場合は、 'read user pass host <<< ...' –