转义从系统发送到Unix的命令中的字符

时间:2012-06-28 12:00:41

标签: c unix character-encoding escaping

如何将基于C的系统中的以下行转义为Unix命令行,以便Unix使用这一行:

tr "\304\305\326" "\134\135\136" </stx/users/n/tmp/tmpfile1.tmp>/stx/users/n/tmp/tmpfile2.tmp

最明显的是:

build("|tr \"\\304\\305\\326\" \"\\134\\135\\136\", "<", tmp1, ">", tmp2")

但是在运行时,它会在Unix中找到一个找不到文件的错误。当删除额外的\“时,它会将文件写入OK,但问题是字符串替换不起作用。使用上面的行,字符被替换为OK。

撇号不能用于八进制字符,因为系统会将它们作为实际字符传递,例如。 Ö而不是 \ 326

“build”功能是使用中基于C的系统的功能。基本上是字符串生成器。管道用于使命令在Unix中运行。

1 个答案:

答案 0 :(得分:0)

我不知道你构建的函数究竟应该做什么,但也要记住你也必须转义空格字符。