将参数从shell脚本传递给c程序

时间:2012-10-13 17:05:38

标签: c bash shell

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

非常感谢任何建议,

2 个答案:

答案 0 :(得分:2)

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

但是在你的脚本中,c_program会在run_with_valgrind调用后重新调用它时运行两次(我不知道它是否打算)

答案 1 :(得分:1)

我喜欢在这里使用'here docs':

$RUN_WITH_VALGRIND ./c_program <<EOF
first
second
EOF

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