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

你好,

我有以下 bash 脚本,我想将字符串参数传递给我的 c 程序。我尝试使用管道但失败了。

c 程序将需要从 shell 脚本中获取输入。我不确定从 shell 脚本中读取输入。

我的 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 从 shell 脚本中读取输入。

非常感谢您的任何建议,

4

2 回答 2

2

echo "Hello" | $RUN_WITH_VALGRIND ./c_program,就这么简单。

但是在您的脚本中, c_program 将在您在调用后重新调用它时运行两次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 回答