我想在 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' 不被解释为换行符。我怎样才能解决这个问题?
最佳答案
正如娇气的 ossifrage 的评论所建议的那样,假设您使用的是类 Unix 的 shell 程序(意味着不是 Windows 上的 cmd.exe ......),带引号的字符串中的原始换行符会被解释为它本身并且不会终止命令。
你应该简单地写:
./myprogram "number=0
while [ \$number -lt 10 ]; do
echo \$number number=\$((number + 1))
done"
当心:否
\
在换行之前。如果你放了一个,换行符将被视为延续并被删除。编辑:但当然
$
字符必须在 "
之间转义...
关于c - 传递参数包括从命令行到 C 程序的换行符 (\n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28237140/