【发布时间】:2012-06-28 12:00:41
【问题描述】:
如何将下面的行从基于 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 中运行。
【问题讨论】:
标签: c unix character-encoding escaping