2015-07-19 40 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