2015-07-19 72 views
1

如何通过掩码将字符串更改为另一个字符串? 我希望看到这样的事情代码:如何在bash脚本中通过掩码更改字符串?

if [ "$PANEL_SOURCE_COMPONENT_NAME" == "something-*"]; then 
        COMPONENTO_NAME="newline-*" 
else 
        COMPONENTO_NAME="$PANEL_SOURCE_COMPONENT_NAME" 
fi 
当然

,这个代码是行不通的。我如何做类似的事情? 谢谢。

+0

重复的http://stackoverflow.com/questions/15418149/how-do-i-test-if-a-string-starts-with-another-in-bash。 – CristiFati

+0

我不太明白你的问题,但如果你想要避免字符串$,你可以写:''PANEL_SOURCE_COMPONENT_NAME''或'“\ $ PANEL_SOURCE_COMPONENT_NAME”' – juanmajmjr

+0

@juanmajmjr,我想改变变量,这从“某事物”开始,并且在那里包括另一个开始 - “新行 - ”。例如,如果变量是“something-ololol-9”,我想看到“newline-ololo-9” – gggigi

回答

1

尝试这样:

if [[ "$PANEL_SOURCE_COMPONENT_NAME" = "something-"* ]]; then 
    COMPONENTO_NAME="$(echo "$PANEL_SOURCE_COMPONENT_NAME" | sed 's/something-\([a-zA-Z0-9_-]\)/newline-\1/g')" 
else 
    COMPONENTO_NAME="$PANEL_SOURCE_COMPONENT_NAME" 
fi 

例如:

[~]$ TEST=something-that-is-long 
[~]$ echo "$TEST" | sed 's/something-\([a-zA-Z0-9_]\)/newline-\1/g' 
newline-that-is-long 
[~]$ 

注意,*必须放在引号外面猛砸做水珠匹配。

+1

它的工作原理。非常感谢!你很棒! – gggigi

+0

谢谢,没问题,很乐意帮忙! :) – Will