我尝试使用system
命令将文本输出到文件。我使用echo -n
并传递-n
,因此它不会自动在文件中创建换行符。这是我使用的命令:
system("echo -n \"text for the file\" >> path/to/file.txt")
当我检查文本文件时,我得到的输出是:
-n text for file
如果我在终端中运行相同的命令,我就不会得到-n
为什么不接受-n
作为论据?
答案 0 :(得分:4)
echo -n
不可移植。请改用printf
来打印字符串。
system("printf 'text of the file' >> path/to/file.txt")
具体来说,POSIX规范允许符合echo
的实现支持-n
选项,但不要求它或定义它应该做什么。您的system
调用正在使用未实现dash
的shell(可能是-n
),并将其视为写入标准输出的常规参数。
答案 1 :(得分:1)
除此之外,chepner的有用答案,因为system()
调用echo
调用-n
的本地实现而未实现FreeBSD
功能,您可以调用GNU
或者基于echo
的{{1}}安装明确安装如下,
在Mac OS
FreeBSD
echo
版本的/bin/echo
安装为system("/bin/echo -n \"text for the file\" >> path/to/file.txt")
,您可以将其用作
echo
作为附注,您可以先运行which echo
来查看是否安装了{{1}}。