在c程序中运行脚本

时间:2016-03-08 15:27:22

标签: bash command-line scripting

我编写了一个脚本来隐藏用户输入,在运行时它作为一个简单的脚本工作,但我想集成到c程序,但它给出了以下错误:

warning: missing whitespace after macro name

error: expected ')' before '$pass'

这是程序:

#include"header.h"
#define SHELLSCRIPT"\
#bin/bash\n\
echo 'Password Please:'\n\
stty -echo\n\
read pass\n\
stty echo\n\
printf'\n'\n\
sleep'2'\n\
echo "$pass"\n\
"
int main()
{
puts("Will execute sh with following script:");
puts("SHELLSCRIPT");
puts("Starting now");
system(SHELLSCRIPT);
return 0;
}

如果我替换

echo "$pass" with echo '$pass',它运行但打印:

Will execute sh with following script

SHELLSCRIPT

Starting now

Password Please:

$pass

最后它应该打印用户在密码请求时提示输入的数据,而不是$ pass:

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要转义 $ pass 周围的字符。这应该有效:

#define SHELLSCRIPT"\
#bin/bash\n\
echo 'Password Please:'\n\
stty -echo\n\
read pass\n\
stty echo\n\
printf'\n'\n\
sleep'2'\n\
echo \"$pass\"\n\
"

如果你'而不是 bash不会用其值替换var-name。请参阅man bash