2012-07-19 63 views
0

我想比較一個字符串與整數,如果它滿足給定的要求,那麼它會將該值添加到文本文件。比較帶整數的字符串

test="$fqdn:$port" 

if [ $test = "$fqdn:443" ]; then 
    echo "$test" | tee -a list.txt 
fi 

在這種情況下,變量fqdn將舉行一個網站和端口的值會持有不同的端口號,但我只希望保留有443口:後的那些並將其附加到一個新的文本文件名爲list.txt

當我運行此代碼,我不明白出於某種原因想要的結果。有人可以幫忙嗎?我對shell編程非常新穎。

編輯:

的FQDN看起來像這樣的價值觀:

something1.awesome.com 
something2.awesome.com 
something3.awesome.com 
something4.awesome.com 
something5.awesome.com 
... 

對於港口,它看起來像這樣:

80 
8090 
443 
1090 
80 
80 
... 

編輯2:

我的確在考慮只將$ port與443進行比較,但在我的情況下這不起作用,因爲第一個fqdn與第一個端口一起使用,並且如果第一個fqdn:port等於類似fqdn:443的東西,則將其添加到文本文件。

+0

什麼是$ FQDN值,並在不給所需要的輸出的情況下$端口? – 2012-07-19 14:21:35

+2

只需簡單地測試「$ port」=「443」就可以了。 – 2012-07-19 14:23:12

+0

這在我的情況下不起作用,因爲第一個fqdn與第一個端口並且如果第一個fqdn:端口一起使用。如果它等於fqdn:443之類的東西,那麼將其添加到文本文件中。 – bloodstorm17 2012-07-19 14:28:01

回答

0

嘗試是這樣的

if [ $port -eq 443 ]; then 
    echo $fqdn:$port | tee -a list.txt 
fi 
0

很容易治療合併FQDN和PORT數據插座,因爲你也想記錄這些信息,這是優選的。然後執行與grep的簡單文本匹配,將找到與特定端口對應的每一行。

是套接字列表在腳本中使用較早,例如在文件列表?如果是的話,下面的工作(假設每行一個項目文件socket.txt中): -

PORT=443 
grep ":$PORT\$" socket.txt | tee -a list.txt 

這裏的grep是搜索文件,其中全端口號採用冒號後面的所有字符串。或者,grep也會過濾通過管道傳遞給它的行。

如果沒有可用的插座信息,則可以結合自己連續FQDN和PORT項目和生產socket.txt文件。如果您可以將FQDN列表和PORT列表寫入兩個文件(每行一個項目),則以下腳本(例如名稱爲socket)將執行此操作。

#!/bin/bash 

die() { 
    echo "$*" >&2 
    exit 1 
} 

[ $# = 2 ] || die "usage: `basename $0` FQDN PORT" 

exec 6<$1 || die "Cannot open $1" 
exec 7<$2 || die "Cannot open $2" 

while true 
do 
    read FQDN <&6 && read PORT <&7 || exit 
    echo "$FQDN:$PORT" 
done 

運行方式:socket fqdn.txt port.txt