2012-09-03 31 views
0

我有一個shell腳本,它由很多perl腳本組成,其中一個perl腳本每次都必須以不同的輸入運行,並且必須存儲該值如圖所示向程序輸入數組中的所有字符串逐個

#!/bin/sh 
..... 
.... 
perl test.pl apple 
perl test.pl mango 
perl test.pl banana 
... 
... 
.... 

我通過查看使用這些名稱生成的文件在命令行中鍵入這些名稱。

**names.txt** 
apple 
mango 
banana 

OR

**names.txt** 
    apple mango banana 

他們是用Perl或殼的方式這需要每個名字在時間的輸入。
即可以names.txt中被認爲是一個數組,然後perl腳本使用ARGV或任何其他means.So,我可以有我的外殼腳本等

#!/bin/sh 
    ..... 
    .... 
    perl test.pl names.txt 
    .... 
    ... 
    .... 
採取在一個時間作爲輸入的每個數組值

回答

1

的常用方法來編寫採取輸入從文件是構建他們如下Perl程序:

while ($line = <>) { 

    # do stuff with $line 
} 

如果在命令行上給出了文件名,perl會自動將它們逐一打開,將這些行提供給腳本。如果沒有給出文件名,它將從標準輸入讀取。

但是,如果以這種方式編寫腳本,您將無法直接在命令行上輸入水果,它們必須位於文件或標準輸入中。

要處理多個水果在同一行,你的代碼可以這樣做:

while (my $line = <>) { 

    chomp $line; 

    foreach my $fruit (split ' ', $line) { 

     # do something with $fruit 
    } 
} 
+0

'打開FILE2,「<31.txt」;打開FILE3,「>> file2.l」;打開FILE123,「){if($ line =〜m/** $ names **/ig).... .... .... ...這裏是我的代碼和$ names每次都必須從names.txt中提供不同的輸入。 – unkaitha

+0

你的代碼去了我寫'#做'$ fruit'的地方。只需將變量名稱從'$ names'改爲'$ fruit'即可。或者,也許你可以先讀取所有水果名稱,然後將它們放入一個數組中,然後在你的代碼中使用它。我只是向您展示處理在命令行上給出的文件的一般方式,您可以隨意使用它。 – Barmar

0

在bash,逐行:

while read fruit 
do 
    perl test.perl "$fruit" 
done < names.txt 
+0

我是新來的編程ü會請電話我什麼是bash?我應該在我的shell腳本中寫入這些命令嗎? – unkaitha

+0

bash是一個Bourne-shell兼容的shell。使用'#!/ bin/bash'作爲你的shebang行(假設這是bash所在的位置)(儘管這個構造可能適用於sh)。 –

+0

丫我得到了...而且我必須使用ARGV [$我]的地方perl腳本使用該命令行中給出的輸入????? – unkaitha

相關問題