我想在linux中传递一个shell代码(字符串),在命令行中将新行字符作为参数包含在C程序中,例如:./myprogram "number=0 \n while [ $number -lt 10 ]; do \n echo $number \n number=$((number + 1)) \n done
“
如果我将此字符串直接放在C代码中,并使用system(command_string),则符号'\ n'将被解释为换行符,并且它将正常工作。但是,如果我通过命令行发送此字符串,如上所述它将无法正常工作。符号'\ n'不会被解释为换行符。我怎么能解决这个问题?
答案 0 :(得分:4)
正如squeamish ossifrage的评论所暗示的那样,如果您使用的是类似Unix的shell(意味着不是Windows上的cmd.exe ...),则引用字符串中的原始换行符会被解释为自身不要终止命令。
你应该简单地写一下:
./myprogram "number=0
while [ \$number -lt 10 ]; do
echo \$number number=\$((number + 1))
done"
注意:换行前不要\
。如果您输入一个,则换行将作为延续,并将被删除。
修改:但当然$
字符必须在"
之间转义...
答案 1 :(得分:0)
\ n包含在双引号中。你能试试这个:
./ myprogram“number = 0”\ n“while [$ number -lt 10]; do”\ n“echo $ number”\ n“number = $((number + 1))”\ n“done “