コマンドラインから変数にプログラムの出力を返す方法を誰か教えてもらえますか?
var = ./a.out params
これをコマンドラインから実行しているときに、プログラムの出力を変数に入れようとしています。
コマンドラインから変数にプログラムの出力を返す方法を誰か教えてもらえますか?
var = ./a.out params
これをコマンドラインから実行しているときに、プログラムの出力を変数に入れようとしています。
プログラム出力をUnixシェルの変数に保存するには、プログラムstdout
が記述した言語に関係なく、次のようなものを使用できます
var=`./a.out params`
またはこれ
var=$(./a.out params)
=
演算子の前後にスペースを入れないでください。
複数行のコマンドからの出力については、次のようにできます。
output=$(
#multiline multiple commands
)
または:
output=$(bash <<EOF
#multiline multiple commands
EOF
)
例:
#!/bin/bash
output="$(
./a.out params1
./a.out params2
echo etc..
)"
echo "$output"
rasen からの回答を補完するには、変数をプログラム内から外部環境に取得するには、それを に出力する必要がありますstdout
。
他の回答で提供されている構文を使用すると、すべての出力stdout
がシェル環境変数に入れられますvar
。
プログラムからシェルに値を渡すには、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
) の戻り値を取得します。