5

コマンドラインから変数にプログラムの出力を返す方法を誰か教えてもらえますか?

var = ./a.out params

これをコマンドラインから実行しているときに、プログラムの出力を変数に入れようとしています。

4

4 に答える 4

12

プログラム出力をUnixシェルの変数に保存するには、プログラムstdoutが記述した言語に関係なく、次のようなものを使用できます

var=`./a.out params`

またはこれ

var=$(./a.out params)

=演算子の前後にスペースを入れないでください。

于 2013-07-02T06:14:21.257 に答える
1

複数行のコマンドからの出力については、次のようにできます。

output=$(
#multiline multiple commands
)

または:

output=$(bash <<EOF
#multiline multiple commands
EOF
)

例:

#!/bin/bash
output="$(
./a.out params1
./a.out params2
echo etc..
)"
echo "$output"
于 2015-06-15T22:55:11.260 に答える
0

rasen からの回答を補完するには、変数をプログラム内から外部環境に取得するには、それを に出力する必要がありますstdout

他の回答で提供されている構文を使用すると、すべての出力stdoutがシェル環境変数に入れられますvar

于 2013-07-02T07:13:01.620 に答える
0

プログラムからシェルに値を渡すには、stdout(既に述べたように) またはC プログラムの関数return内のステートメントを使用します。main()以下のワンライナーは、両方のアプローチを示しています。

echo -e '#include <stdio.h>\n int main() { int a=11; int b=22; printf("%d\\n", a); return b; }' | gcc -xc -; w=$(./a.out); echo $?; echo $w

出力:

22

11

variableaは に出力されstdout、 variablebは に返されmain()ます。bash で使用$?して、最近呼び出されたコマンド (この場合は./a.out) の戻り値を取得します。

于 2013-07-02T07:58:02.260 に答える