在busybox(ash)裡不一樣的awk結果 [論壇 - Ubuntu 程式設計]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 (2)


回覆: 在busybox(ash)裡不一樣的awk結果
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 35
HP : 172 / 861
MP : 598 / 20867
EXP: 45
離線
暫時先用下面的方式改寫你的程式



entry=0
table1=$1
table2=$2

echo "Test: Get all numbers and corresponding string depend on the first number"

while read line
do

read var1_$entry var2_$entry var3_$entry << HERE
$line
HERE

string=$(cat $table2|grep $(eval echo \$var1_$entry)|sed 's/ (.*)//g')
eval string_$entry=\$string
eval echo -e "\\\t\$var1_$entry \$var2_$entry \$var3_$entry \$string_$entry"

entry=$(expr $entry + 1)

done < $table1




就會顯示


0x30 6 12 First String
0x31 7 12 Second String






samwhelp 寫到:
DJW 寫到:
好,我會從這方向去思考的
會這樣用的原因主要是因為table的內容實際上有幾十行,每一行有10幾個數值需存進變數
所有的變數在while loop結束後都還要拿出來做特定的處理
所以事實上我會需要幾百個變數來存table裡的值
為了不讓程式變的太冗長,所以才沒有照你的建議去使用變數

還是很謝謝你的幫忙


我大概猜的出來,為啥你堅持要這樣做。

像這樣複雜的資料結構,我就會用PHP處理了。

不過你這個script要執行,環境應該是在busybox。

所以應該也無法使用PHP。

另外先給你一個方向,下面的方式,不會是你預期的



entry=0
string_$entry="First"



就會顯示


test.sh: line 2: string_0=First: command not found



這跟你剛剛的程式錯誤的地方是一樣的

剛測試了一下


entry=0
eval string_$entry="First"
eval echo \$string_$entry



就會顯示


First




還在研究怎麼改寫你的程式




另外突然想到,你的環境,可以用awk來處理吧,用awk也許可以做到你的需求。
不過不是很了解你的需求,所以提出來當參考摟。

2015/5/22 16:18
應用擴展 工具箱
回覆: 在busybox(ash)裡不一樣的awk結果
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 35
HP : 172 / 861
MP : 598 / 20867
EXP: 45
離線
DJW 寫到:
好,我會從這方向去思考的
會這樣用的原因主要是因為table的內容實際上有幾十行,每一行有10幾個數值需存進變數
所有的變數在while loop結束後都還要拿出來做特定的處理
所以事實上我會需要幾百個變數來存table裡的值
為了不讓程式變的太冗長,所以才沒有照你的建議去使用變數

還是很謝謝你的幫忙


另外我還想到一個方式。

若你的需求,真的無法一次迴圈就跑完。

你可以在第一次迴圈跑的時候,把你原來變數的值,倒到檔案去,

這時候你的檔案就要拆開,根據陣列索引去命名。

然後跑第二次迴圈的時候,從這些有規則命名的檔案,去撈回你需要的資料。

把「檔案系統」當作你「程式的資料結構」來用。

這也是可以實作的方向,提供當參考樓


2015/5/22 16:35
應用擴展 工具箱
回覆: 在busybox(ash)裡不一樣的awk結果
會員一級
註冊日期:
2010/6/21 16:38
所屬群組:
已註冊使用者
等級: 2
HP : 0 / 25
MP : 3 / 739
EXP: 0
離線
你說的沒錯,因為是在embedded linux環境下在開發script
所以用慣bash後,在busybox下反而不習慣了

2015/5/22 17:24
應用擴展 工具箱

« 1 (2)

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.