从命令行将参数包括换行符 (\n) 传递到 C 程序中

Pass arguments include new line character(\n) into C program from command line

我想在 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' 未被解释为换行符。我该如何解决这个问题?

\n 作为双引号的一部分包含在内。你能试试这个吗:

./myprogram "number=0"\n"while [ $number -lt 10 ]; do"\n"echo $number"\n"number=$((number + 1))"\n"done"

正如 squeamish ossifrage 的评论所建议的那样,前提是您使用的是类 Unix shell(意思不是 cmd.exe on Windows ...),原始换行符带引号的字符串被解释为它本身并且不会终止命令。

你应该简单地写:

./myprogram "number=0
 while [ $number -lt 10 ]; do 
 echo $number  number=$((number + 1)) 
 done"

注意:换行符前没有 \。如果你放一个,换行符将被视为延续并被删除。

编辑:当然 $ 个字符必须在 " 之间转义...