2012-03-03 39 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 

を私は、そのサイズに応じて画像を計算するのにかかった時間の時間にしようとしています。このスクリプトは、画像サイズが異なる(画像サイズが500,1000,1500,2000、...から10000、したがって500,500 10000のピクセル)a.outを実行し、各画像サイズに対して10倍の時間を測定しています。

私がここで理解していないことは、a.outで500から10000までの画像サイズがどのように変更されるかです。 "#画像のサイズをプログラムに渡す"と "/home/a.out $ j $ j"と表示されます。プログラムはどのようにこの変数を取得しますか?イメージサイズを受け取るためにa.outに必要なコードは何ですか?

答えて

0

a.outは、$jではありません。コマンドラインのargsを見てください。

私はbashの方法を忘れていますが、$1$2をチェックアウトしたいと思っています。 CまたはC++(元のプログラムは、コンパイラは名前を指定しないと実行可能ファイルの名前をa.outとすると仮定します)は、argv[1]argv[2]になります。

+0

ありがとうございました。それは理にかなっています。これはC++のプログラムです、あなたはcin >>がうまくいくと思いますか? – user1149772

+0

いいえ、 'cin >>'は 'echo" $ j $ j "のようなものを言ったら意味があります。/home/a.out'となります。 'main'では' int main(int argc、char ** argv) 'のように指定した場合、上記の例では' argv'に引数が入ります。 (しかし、最初は一般的にプログラムの名前です。) – cHao

+0

本当にありがとう。これは多くの意味があります。 – user1149772

関連する問題