2016-07-29 126 views
0

我的問題是,我有喜歡10.3.1.33 的IP地址,該IP地址是內部變量ip=10.3.1.33翻譯變量(bash)的內部編號(IP地址)

現在我想裏面的33翻譯帶「*」的IP地址。 「33」可以改變,所以這個數字必須自動放在變量左右的某個地方..... 我不知道該怎麼做。感謝您的任何意見:)

+0

這個詞翻譯意味着你的轉換有「規則」。如果你有'34',那麼你想轉換爲'%'。我不這是真的,所以要用變量中的「替換」另一個值,可以執行'ip = 10.3.1.33; ip = $ {ip/33/\ * /};回聲:「ip = $ ip」'祝你好運。 – shellter

回答

2

在你非常特殊的情況下,你可以使用:

$ ip="10.3.1.33" 
$ printf "%s\n" "${ip/33/*}" 
10.3.1.* 

而最後一期後,以取代(刪除)的一切:

$ ip="10.3.1.33" 
$ printf "%s\n" "${ip%.*}.*" 
10.3.1.33 

後來是POSIX兼容而第一個可用於bash(其他shell)

+0

如何讓33變成可變的?這個IP地址可以是任何東西,所以我不想每次都把自己的代碼的最後一個字節放在你的代碼中 – tso

+0

@tso第二個代碼片段不是完全一樣嗎?刪除最後一部分的IP,然後添加'。*' – andlrc

+0

啊耶謝謝,工作:) – tso

1

我可以考慮一下:

ip=1.2.3.4 
ip1=${ip%.*}.*