請問一個標準輸入讀取多個不定變數的問題 - Linux

Table of Contents

我現在再寫一個script

其中有一段是要請使用者輸入所需的的原子種類,


我目前的作法是加入下列指令

read -p "Please enter the atomic species in the system" ATOM1 ATOM2 ATOM3.....

ATOM10


不過這樣有兩個問題,就是當使用者輸入的原子總數超過10個的話

程式就會出問題。而且我每一個變數還要用if條件式檢查,是否為空變數。


再者如果不知道確切變數的輸入個數,

後續的程式處理會有點麻煩。




所以想請教一下,

有沒有辦法可以自動辨識使用者的輸入個數?

並分別自動指派?


e.g.

使用者一輸入 H Li Na K Rb Cs Fr

然後就可以自動辨識,使用者輸入了7個變數

變數總數為7。

只派 ATOM1=H ATOM2=Li ATOM3=Na.........



有點類似直接把script當作指令來執行

shell 自動指派變數 $1=H, $2=Li, $3=Na...............,

只要echo $# 就可以得知變數總數



不知道如果為互動式腳本的話要怎麼處理?

--
所謂的私立龍頭(單選,請自行選擇帶入):
a.輔仁 b.東海 c.東吳 d.長庚 e.中原 f.元智 g.逢甲 h.淡江
說穿了只不過是比上不足:
h.台科 i.台清交成 j.剩下的中大 k.勉強叫得出名字的國立
比下又閒太過多餘:
l.叫不出名字+沒聽過的國立科大與普大+除選項A~H以外的其他私立

--

All Comments

Gilbert avatarGilbert2012-05-04
eval, 要不然可以用bash, 它有array
Tristan Cohan avatarTristan Cohan2012-05-06
不好意思,我還是不太明白,方便在說詳細點嗎?
Edith avatarEdith2012-05-09
read -a ar; 收到的ar是array, 可以用${a[0]}, ${a[1]}叫出來
Jessica avatarJessica2012-05-10
${#ar[@]}是array的大小, 可是寫出這種東西都只能在bash用
bash=/bin/bash
Margaret avatarMargaret2012-05-14
echo "vars received in the script -> $@"
Aaliyah avatarAaliyah2012-05-17
我了解了!感謝,今天才知道原來read有讀aray的功能
Anthony avatarAnthony2012-05-20
只能在bash用倒是無所謂,反正我用的機器都是bash的