2012-03-03 63 views
1

我正在使用bash腳本來提交程序以在服務器上運行,並且我在理解這是如何工作的問題。 我被給了一個完整的工作腳本,但無法理解它。如何用bash腳本更改變量的值?

看看這一段:

echo "Sequential,Number" 

echo -n "Size" 
for i in $(seq 1 1 10) 
do 
    for j in $(seq 500 500 10000) 
    do 
     echo -n "$j," 
     #Pass the image size to the program 
     /home/a.out $j $j 
    done 
done 

我想時間過了多長時間取決於它的大小來計算的圖像。該腳本以不同大小的圖像運行a.out(像素數從500,1000,1500,2000,...到10000,因此seq 500 500 10000),每個圖像大小測量10次。

我在這裏不理解的是如何在a.out中更改500到10000的圖像大小。它說「#將圖像大小傳遞給程序」和「/home/a.out $ j $ j」。程序如何獲得這個變量? a.out需要什麼代碼才能接收圖像大小?

回答

0

a.out不會看$j - 它會看看它的命令行參數。

我忘了bash是怎麼做的,但我想你會想看看$1$2。在C或C++(我假設原始程序是;編譯器喜歡命名可執行文件a.out,如果您不指定名稱),它們將是argv[1]argv[2]

+0

謝謝..這是有道理的。這是一個C++程序,你認爲cin >>會起作用嗎? – user1149772 2012-03-03 01:41:50

+0

編號'cin >>'只有當你說'echo'時纔有意義$ j $ j「| /家庭/ a.out'。在'main'中,如果你指定它爲'int main(int argc,char ** argv)',在上面的例子中'argv'將包含參數。 (雖然第一個通常是程序的名字。) – cHao 2012-03-03 01:45:02

+0

好的。非常感謝。這很有意義。 – user1149772 2012-03-03 01:46:07