我的输入字符串是这样的:
INPUT_STRING="{/p1/p2=grabthistext}"
我想从INPUT_STRING
中打印出grabthistext
。
我尝试了echo "${INPUT_STRING##*=}"
,它打印grabthistext}
如何使用参数展开表达式读取grabthistext
?
如果你真的想要单个参数展开,那么你可以使用:
#!/bin/bash
shopt -s extglob
INPUT_STRING="{/p1/p2=grabthistext}"
echo "${INPUT_STRING//@(*=|})}"
grabthistext
我会使用bash正则表达式:
#!/bin/bash
INPUT_STRING="{/p1/p2=grabthistext}"
[[ $INPUT_STRING =~ =(.*)} ]] && echo "${BASH_REMATCH[1]}"
grabthistext
temp="${INPUT_STRING##*=}"
echo "${temp%}}"
grabthistext
您可以分两步完成:首先提取=
之后的片段,并将其存储在一个新变量中。然后使用相同的技术删除不需要的}
后缀:
INPUT_STRING="{/p1/p2=grabthistext}"
TEMP_STRING=${INPUT_STRING##*=}
OUTPUT_STRING=${TEMP_STRING%}}
echo "$OUTPUT_STRING"
# grabthistext
上网查。