在引号处拆分字符串
Split string at quotes
我的用例:bw unlock 'my password'
输出多行,其中一行以 $ export BW_SESSION="
开头。我想将引号之间的内容保存到一个名为 BW_SESSION.
的变量中
示例 bw unlock
输出:
Your vault is now unlocked!
To unlock your vault, set your session key to the `BW_SESSION` environment variable. ex:
$ export BW_SESSION="0d7hzk3i9UaX0Pbq9YlG5VG11ozOGZQ1o304orui1orxHeh7Lk2GIqWCcFN3+hnpMnHqIGjqOlsgQ5tgaI9w1A=="
> $env:BW_SESSION="0d7hzk3i9UaX0Pbq9YlG5VG11ozOGZQ1o304orui1orxHeh7Lk2GIqWCcFN3+hnpMnHqIGjqOlsgQ5tgaI9w1A=="
You can also pass the session key to any command with the `--session` option. ex:
$ bw list items --session 0d7hzk3i9UaX0Pbq9YlG5VG11ozOGZQ1o304orui1orxHeh7Lk2GIqWCcFN3+hnpMnHqIGjqOlsgQ5tgaI9w1A==
我的尝试:
lineWithSessionID=$(bw unlock 'my password' | grep '$ export BW_SESSION="') ;
quotesToSpaces=(${(s/\"/)lineWithSessionID}) ;
splitOnSpaces=(${(s/ /)quotesToSpaces}) ;
BW_SESSION=$splitOnSpaces[4] ;
echo $BW_SESSION
我原以为 quotesToSpaces=(${(s/\"/)lineWithSessionID})
能真正完成工作并在引号处拆分字符串,但它会间歇性地用空格替换引号,根本不起作用
你想得太复杂了:再做一个正则表达式匹配:
if [[ $lineWithSessionID =~ \"(.*)\" ]]
then
BW_SESSION=$match[1]
else
echo Unexpected content: $lineWithSessionID
fi
如果你很勇敢并且真的可以相信输出bw unlock
,你甚至可以做一个
eval $lineWithSessionID[3,-1]
设置 BW_SESSION
并将其放入环境中,但当然会带来 eval
的所有危险......
我的用例:bw unlock 'my password'
输出多行,其中一行以 $ export BW_SESSION="
开头。我想将引号之间的内容保存到一个名为 BW_SESSION.
示例 bw unlock
输出:
Your vault is now unlocked!
To unlock your vault, set your session key to the `BW_SESSION` environment variable. ex:
$ export BW_SESSION="0d7hzk3i9UaX0Pbq9YlG5VG11ozOGZQ1o304orui1orxHeh7Lk2GIqWCcFN3+hnpMnHqIGjqOlsgQ5tgaI9w1A=="
> $env:BW_SESSION="0d7hzk3i9UaX0Pbq9YlG5VG11ozOGZQ1o304orui1orxHeh7Lk2GIqWCcFN3+hnpMnHqIGjqOlsgQ5tgaI9w1A=="
You can also pass the session key to any command with the `--session` option. ex:
$ bw list items --session 0d7hzk3i9UaX0Pbq9YlG5VG11ozOGZQ1o304orui1orxHeh7Lk2GIqWCcFN3+hnpMnHqIGjqOlsgQ5tgaI9w1A==
我的尝试:
lineWithSessionID=$(bw unlock 'my password' | grep '$ export BW_SESSION="') ;
quotesToSpaces=(${(s/\"/)lineWithSessionID}) ;
splitOnSpaces=(${(s/ /)quotesToSpaces}) ;
BW_SESSION=$splitOnSpaces[4] ;
echo $BW_SESSION
我原以为 quotesToSpaces=(${(s/\"/)lineWithSessionID})
能真正完成工作并在引号处拆分字符串,但它会间歇性地用空格替换引号,根本不起作用
你想得太复杂了:再做一个正则表达式匹配:
if [[ $lineWithSessionID =~ \"(.*)\" ]]
then
BW_SESSION=$match[1]
else
echo Unexpected content: $lineWithSessionID
fi
如果你很勇敢并且真的可以相信输出bw unlock
,你甚至可以做一个
eval $lineWithSessionID[3,-1]
设置 BW_SESSION
并将其放入环境中,但当然会带来 eval
的所有危险......