看板 LinuxDev 關於我們 聯絡資訊
版上各位高手好 小弟才疏學淺 寫shell script經驗不多 想請教一個有關shell script coding的問題 麻煩版上大大不吝賜教 目的: 一個一個擷取出不定數目的client IP address 已知: 可取得 1.目前client數目(存在變數 client_count) 2.假設目前client數目是3個 那他們會存在變數 client_addr1 client_addr2 client_addr3 5個則存在變數 client_addr1 client_addr2 client_addr3 client_addr4 client_addr5 小弟的code片段: declare -i i while [ "$i" != "$client_count" ] do client_addr="client_addr$i" #利用上面那行字串串接的變數名稱去取值存到client_addr_value config_get client_addr_value remote_telnet $client_addr i=i+1 done 問題: 由於$client_count存的是字串 請問要如何轉數字呢 小弟在裡面埋echo 發現會變成無窮loop 而且clinet_addr值永遠是client_addri=i+1 主要問題大概是 1.數字與字串的轉換比對 2.字串的串接 不好意思 這個問題可能比較初級 小弟try了一陣子陷入鬼打牆 請高手指點小弟迷津 感激不盡 <(__)> -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.254.51 ※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1405516456.A.8AC.html
filiaslayers:你可以搭awk用 07/16 21:21
clanguage:如果不是開發嵌入式不如學別的 script language.. 07/16 23:19
filiaslayers:shell script算是好學好用,也沒必要放棄吧 07/17 00:58
carylorrk:簡單的應用 shell script 很直觀快速阿... 07/17 06:21
goldie:你的shell是bash嗎? 07/17 12:15
goldie:或著script是#!/bin/bash開頭 07/17 12:16
goldie:bash有array以及更簡潔直觀的語法 07/17 12:16
goldie:shell裡面都是字串吧?XD 有分整數? 07/17 12:18
goldie:你declare i完後有初始成零嗎?i=0 07/17 12:19
goldie:while裡面的不等於(!=)私心推薦改成小於等於(-le) 07/17 12:21
goldie:遞增語法有很多種,例如let i=i+1 07/17 12:28
yvb:eval client_addr='$'"client_addr$i" 07/17 13:40
yvb:i=$(expr $i + 1) 07/17 13:44
yvb:根據 declare, 推測應是 bash; g大建議的 array, let 都很優. 07/17 13:53
bluedragon:感謝各位大大指點 已解決 感謝大家幫忙<(__)> 07/17 19:08