我想在linux中传递一个shell代码(String),在命令行中将新行字符作为参数包含到C程序中,例如:./myprogram "number=0 \n while [ $number -lt 10 ]; do \n echo $number \n number=$((number + 1)) \n done
“
如果我将这个字符串直接放在C代码中,并使用系统(Command_string),符号'\n‘将被解释为换行符,并且它会很好地工作。但是,如果像上面那样通过命令行发送这个字符串,它将无法工作。符号'\n‘不被解释为换行符。我怎样才能解决这个问题?
发布于 2015-01-30 07:42:33
正如squeamish ossifrage的评论所建议的那样,如果您使用的是类似Unix的shell (在Windows上不使用cmd.exe ),引用字符串中的原始换行符将被解释为本身,而不终止命令。
你应该简单地写:
./myprogram "number=0
while [ \$number -lt 10 ]; do
echo \$number number=\$((number + 1))
done"
注意:在换行符之前没有\
。如果您放置了一个,换行符将被作为一个延续,并将被删除。
编辑:但当然$
字符必须在"
之间转义.
发布于 2015-01-30 06:53:01
N作为双引号的一部分包括在内。你能试试这个吗?
./myprogram "number=0“\n而$number -lt 10;do”\n "echo $number“\n "number=$((number + 1))”\n "done“
https://stackoverflow.com/questions/28237140
复制