シェル変数をコマンドライン引数として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になり、そのようなファイルやディレクトリなどはありません。シェル変数なしで実行している間、適切な出力が得られます。よろしくお願いします。この問題が解決した場合は、さらに自動化するために使用します。