传递参数包括从命令行到C程序的新行字符(\ n)

时间:2015-01-30 13:38:46

标签: c command-line newline

我想在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'不会被解释为换行符。我怎么能解决这个问题?

2 个答案:

答案 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 “