1

Cプログラムからシェルスクリプトに毎回変わる引数を渡す必要があります。

int val=1234;
char buf[100];
sprintf(buf,"echo %d",val);
system("call.sh $buf");

call.sh::

#!/bin/sh
echo "welcome"
echo $*
echo "done"

Cの出力は::

welcome    
done

スクリプトに 1234 という引数値が表示されません。誰かが正しい価値を得るために私に提案できますか...

4

2 に答える 2

2

C 変数をシェル変数として渡すことはできません。コマンドライン全体を文字列で構築し、それをに渡す必要がありますsystem(...)

int val=1234;
char buf[100];
sprintf(buf, "call.sh %d", val);
system(buf);
于 2013-10-30T19:24:50.240 に答える
0

setenv()getenv()またはputenv()関数 ( で定義)を使用する必要がありますstdlib.h。引用man

setenv()name がまだ存在しない場合、この関数は変数 name を値 value とともに環境に追加します。name が環境に存在する場合、overwrite がゼロでない場合、その値は value に変更されます。overwrite がゼロの場合、name の値は変更されません。この関数は、名前と値が指す文字列のコピーを作成します ( とは対照的putenv(3)です)。

関数のプロトタイプは次のとおりです。

int setenv(const char *name, const char *value, int overwrite);
于 2013-10-30T22:17:33.163 に答える