-1
gcc (GCC) 4.7.2
GNU bash, version 4.2.37

こんにちは、

文字列パラメーターを c プログラムに渡したい次の bash スクリプトがあります。パイプを使用しようとしましたが、失敗しました。

c プログラムは、シェル スクリプトから入力を取得する必要があります。シェルスクリプトからの入力を読み込むかどうかはわかりません。

私のbashスクリプトは以下です。

#!/usr/bash

# About on any errors
set -e

RUN_WITH_VALGRIND=""

if [ "$1" == "valgrind" ]; then
    RUN_WITH_VALGRIND="valgrind"
    echo "START TESTING WITH VALGRIND"
fi

$RUN_WITH_VALGRIND ./c_program

echo "Hello" | ./c_program

そして私のサンプルCプログラムはここにあります:

char str_input[16];
printf("Get input: ");
scanf("%s", str_input);
printf("Input [ %s ]\n", str_input);

シェルスクリプトから入力を読み取るためにscanfを取得しようとしています。

アドバイスありがとうございました。

4

2 に答える 2

2

echo "Hello" | $RUN_WITH_VALGRIND ./c_program、それはとても簡単です。

ただし、スクリプトでは、呼び出し後にc_programを再呼び出しすると、c_programが2回実行されますrun_with_valgrind(意図しているかどうかはわかりません)。

于 2012-10-13T17:11:31.487 に答える
1

そのために「here docs」を使用するのが好きです:

$RUN_WITH_VALGRIND ./c_program <<EOF
first
second
EOF

参照。http://tldp.org/LDP/abs/html/here-docs.html

于 2012-10-14T12:06:49.303 に答える