4

我正在使用的 perl 脚本中有以下命令:

system ("mycommand /home/tahoar/ไมโคร_tm-อังกฤษ-ไทย/giza.อังกฤษ-ไทย/อังกฤษ-ไทย.A3.final.part*>/home/tahoar/ไมโคร_tm-อังกฤษ-ไทย/giza.อังกฤษ-ไทย/อังกฤษ-ไทย.A3.final")

该命令失败并出现以下错误:

sh: cannot create /home/tahoar/ไมโคร_tm-อัง��ฤษ-ไทย/giza.อัง��ฤษ-ไทย/อัง��ฤษ-ไทย.A3.final: Directory nonexistent

我的故障排除已确定永远不会执行“mycommand”。各种其他命令(mycommand1、mycommand2 等)也会发生这种情况。命令字符串是 UTF-8。预期的输出路径已经存在。我已将 LC_ALL=C 设置为其他目的。相同的命令在路径中使用拉丁字符正确运行。

为什么重定向的输出路径被破坏?

4

1 回答 1

2

我完全尝试了上面的命令。如果目录丢失,我会得到完全相同的错误。在对应的 mkdir 之后,一切似乎都很好。

该命令在您的情况下没有运行,因为 perl 启动了一个 sh ,它首先尝试设置您的重定向,然后启动连接到准备好的重定向的命令。- 在您的情况下, sh 无法准备重定向,因此无法启动实际命令。

正如您所说的“输出路径已经存在”,但 perl 说“目录不存在”,您似乎都在谈论不同的路径。

尝试从 perl 中 mkdir 或 ls 输出路径。然后你应该能够看到发生了什么。

于 2012-12-24T11:09:53.477 回答