1

シェル変数をコマンドライン引数としてCプログラムに渡したい。これを実践するために、私は次のような基本的なCプログラムを作成しました。

#include<stdio.h>  
#include<stdlib.h>
int main(int argc, char **argv){  
    int i, a, prod=1 ;
    if(argc==2)
    a = atoi(argv[1]);
    else 
    a = 8 ; 
    printf("value of cmd: %d\n",a);
    for(i=1; i <= a ; i++)
        prod *= i ;
    printf("factorial %d!= %d\n",a, prod);
}

ここで、シェルスクリプト変数を介して引数を渡すために、次のような小さなスクリプトを作成しました。

#!/bin/bash  
echo "Welcome to the small shell scripting!!!"
for ((i=4; i<9;i++))
do
        "../programming/ctest/arg $i"
done

../programming/ctest/argは、上記のCプログラムの実行可能ファイルですしかし、スクリプトを実行すると、出力は../programming/ctest/arg 4になり、そのようなファイルやディレクトリなどはありません。シェル変数なしで実行している間、適切な出力が得られます。よろしくお願いします。この問題が解決した場合は、さらに自動化するために使用します。

4

1 に答える 1

2
"../programming/ctest/arg $i"

引用符を削除する必要があります

../programming/ctest/arg $i

詳述すると、引用符を削除せずに、Bashは文字列全体を、意図したようなコマンドと引数ではなく、コマンドとして解釈します。

于 2013-02-17T20:02:09.337 に答える