如何在shell的迴圈中實現字串的拼接

2022-10-11 12:06:11 字數 1694 閱讀 1200

有這麼個需求,提供具體的ip位址和埠號

iplist="

172.20.59.238:34994,172.20.59.21:34994,172.20.59.28:34994

"

想要對這些ip、埠進行處理輸出如下的內容

172.20.59.28

34994

172.20.59.21

34994

172.20.59.238

34994

那要怎麼做··· ···

我們來簡單的分析下,每個ip、埠號都包含如下的部分

ip資訊

埠號

那麼我們只要通過乙個迴圈,將這些字串拼接起來,就可以了··· ···

那說幹就幹

我們寫了乙個如下的shell指令碼

#!/bin/bash

iplist="

172.20.59.238:34994,172.20.59.21:34994,172.20.59.28:34994

"ipnew1=$

str=""

for i in

$ipnew1

doip=`echo $i|awk -f ":"

''` port=`echo $i|awk -f ":"

''` str="

$ip$port

\n""$str"

done

echo -ne "

$str

"

執行下,看下結果:

[root@nctest-snap-test-02 practises]# sh redis-sentinel.sh

172.20.59.28

34994

172.20.59.21

34994

172.20.59.238

34994

[root@nctest-snap-test-02 practises]#

已經滿足了我們的要求

那我們就再回到具體的實現上,主要有3點:

1、定義乙個原始的字串

str=""
這裡,我們定義的是乙個空字串

2、迴圈中實現字串的拼接

這樣多次迴圈後,字串就可以拼接在一起了。

3、顯示中使用echo的-e選項顯示

echo -e "

$str

"

-e選項,就會將其中的\n解析成換行

另外,在最後乙個輸出之後,缺省會有個換行

如果不想要這個換行,可以使用echo的-n選項

echo -ne "

$str

"

這樣執行之後,最後的換行就沒有了:

如何在for迴圈中剔除滿足條件的元素

業務開發過程站常常需要在for迴圈中將某個元素剔除,按照常規的思路,就是對陣列進行乙個for迴圈,然後在迴圈裡面進行if判斷,在判斷中刪除掉指定元素即可。但是由於陣列下標的問題,實際情況往往不會像預想的那樣順利執行。如下所示 var arr 1,2,2,3,4,5 for var i 0 i arr...

如何在迴圈中刪除List集合中的元素

一 首先是最基本的for迴圈 for int i 0 iremove 方法刪除元素後會立刻更新list的size,因此index也發生了變化,會導致漏掉某些元素。解決辦法1 在刪除某乙個元素後直接break,當然這種情況只適合刪除乙個特定元素,不適合刪除多個元素。解決辦法2 index回退一位。如下...

Go語言中如何在range迴圈中修改陣列 切片內容

在go語言中,我們經常會使用到range來幫助我們遍歷一些資料,通常情況下都是檢視操作多一些,但是當我們需要對其原位址上的內容進行變更時,通常都是使用 for i 0 i讓資料結構中的元素都儲存為指標型別,這樣在進行修改的時候,就是對位址上的值進行修改,畢竟指標就是乙個位址,拷貝出來的指標仍然指向同...