作者 主題: 請問一個shell的寫法 A=A_$i echo "$A" 行嗎  (閱讀 4255 次)

0 會員 與 1 訪客 正在閱讀本文。

mjabe

  • 憂鬱的高中生
  • ***
  • 文章數: 194
    • 檢視個人資料
    • http://home.so-net.net.tw/michtw
假設有一文字檔:
/root> more text

A_0=0
A_1=1
A_2=2
A_3=3
/root>


如何用 while loop 將 (A_0, A_1, A_2, A_3) 的
值(0, 1, 2, 3) 列印出來
---------------------------------------
#!/bins/sh
. text
i=0
while [ $i -lt 4 ]; do

 # how to do ??
 # 可以用下面這個類似的語法作出來嗎?
 # x=A_$i
 # echo "$X"
 # (錯誤的結果)
 let i=$i+1

done
---------------------------------------
謝謝

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17462
    • 檢視個人資料
    • http://www.study-area.org
請問一個shell的寫法 A=A_$i echo "$A" 行嗎
« 回覆 #1 於: 2004-02-22 13:17 »
x 是小寫還是大寫?

mjabe

  • 憂鬱的高中生
  • ***
  • 文章數: 194
    • 檢視個人資料
    • http://home.so-net.net.tw/michtw
請問一個shell的寫法 A=A_$i echo "$A" 行嗎
« 回覆 #2 於: 2004-02-22 15:03 »
引述: "netman"
x 是小寫還是大寫?


謝謝你的回答
兩個 x 是同一個變數

---------------------------------------
#!/bins/sh
. text
i=0
while [ $i -lt 4 ]; do

 x=A_$i
 echo "$x"
# (錯誤的結果)
 let i=$i+1

done
-----------------------------------------

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17462
    • 檢視個人資料
    • http://www.study-area.org
請問一個shell的寫法 A=A_$i echo "$A" 行嗎
« 回覆 #3 於: 2004-02-22 16:07 »
下面是我執行你的 script 的結果...
代碼: [選擇]
[netman@study-area tmp]$ cat 1.sh
#!/bin/bash
. text
i=0
while [ $i -lt 4 ]; do

x=A_$i
echo "$x"
let i=$i+1

done

[netman@study-area tmp]$ ./1.sh
./1.sh: text: No such file or directory
A_0
A_1
A_2
A_3

mjabe

  • 憂鬱的高中生
  • ***
  • 文章數: 194
    • 檢視個人資料
    • http://home.so-net.net.tw/michtw
請問一個shell的寫法 A=A_$i echo "$A" 行嗎
« 回覆 #4 於: 2004-02-22 20:45 »
引述: "netman"
下面是我執行你的 script 的結果...
代碼: [選擇]
[netman@study-area tmp]$ cat 1.sh
#!/bin/bash
. text
i=0
while [ $i -lt 4 ]; do

x=A_$i
echo "$x"
let i=$i+1

done

[netman@study-area tmp]$ ./1.sh
./1.sh: text: No such file or directory
A_0
A_1
A_2
A_3


謝謝你的回答
程式的確會跑出這樣的結果
但是這並不是我想要的結果
假設text file 的內容如下:
---------------
A_0=9
A_1=8
A_2=7
A_3=6
---------------
那我可以用下面類似的語法(結果是錯的, 錯誤的式範)
就像 php 一樣可以動態產生變數
------------------------------------
#!/bin/sh
. ./text
i=0
while [ $i -lt 4 ]; do

x=A_$i
echo "$x"
let i=$i+1

done
-------------------------------------
讓程式可以輸出
9
8
7
6
而不是輸出
A_0
A_1
A_2
A_3
看過了 O'REILLY 的那本"bash shell入門"
也沒有看到類似的講解
不知道 shell 可不可以作到這樣的效果
或是有什麼比較漂亮的寫法(要用shell script)

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17462
    • 檢視個人資料
    • http://www.study-area.org
請問一個shell的寫法 A=A_$i echo "$A" 行嗎
« 回覆 #5 於: 2004-02-22 22:28 »
請將
x=A_$i
改為:
x=$A_$i