将eval exec与可执行文件名一起使用,该可执行文件名在路径中包含空格

Dinesh

我遇到了这种情况,在这里我必须执行tshark解码pcap文件。

tshark的位置是 C:\Program Files\Wireshark\tshark.exe

% set fileName TestTShark.pcap
TestTShark.pcap
% set sTsharkCmd "-r $fileName  -Tfields -e ip.src"
-r TestTShark.pcap  -Tfields -e ip.src
% set tsharkPath "C:/Program Files/Wireshark/tshark.exe"
C:/Program Files/Wireshark/tshark.exe
% eval exec $tsharkPath $sTsharkCmd > packet.log
couldn't execute "C:\Program": no such file or directory
% exec $tsharkPath $sTsharkCmd > packet.log
tshark: The file " TestTShark.pcap  -Tfields -e ip.src" doesn't exist.
% set tsharkPath "C:\\Program Files\\Wireshark\\tshark.exe"
C:\Program Files\Wireshark\tshark.exe
% exec $tsharkPath $sTsharkCmd > packet.log
tshark: The file " TestTShark.pcap  -Tfields -e ip.src" doesn't exist.
% eval exec $tsharkPath $sTsharkCmd > packet.log
couldn't execute "C:Program": no such file or directory

由于路径中包含空格,因此在评估代码时,Tcl将其C:\Program视为程序名称并抛出错误。然后,我设法按如下所示用反斜杠转义了空格,然后起作用了。

%  set tsharkPath "C:/Program\\ Files/Wireshark/tshark.exe"
C:/Program\ Files/Wireshark/tshark.exe
% eval exec $tsharkPath $sTsharkCmd > packet.log
% type packet.log
20.0.0.5
%

我只是好奇。还有其他解决方案吗?{*}观察到相同的问题

多纳研究员

您的问题是,您希望空间成为从变量获取的参数的一部分,但要分隔来自另一个参数的参数。默认情况下,Tcl会尝试对所有参数应用相同的统一规则:您需要做一些额外的事情来更改它。

您想使用参数的扩展你的命令

% eval exec $tsharkPath $sTsharkCmd > packet.log

应写为:

% exec $tsharkPath {*}$sTsharkCmd > packet.log

看看它短吗?也更安全。eval除非您确实在做一些非常复杂的事情,否则请尽量避免(我的代码中几乎不需要它……)


如果您不使用Tcl的较旧版本{*},则需要执行以下操作:

% eval [linsert $sTsharkCmd 0 exec $tsharkPath > packet.log]

哪个非常不明显,或者这样:

% eval {exec $tsharkPath} $sTsharkCmd {> packet.log}

这也不是太好(而且很容易忘记正确引用它)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将TrueType字体文件添加到pyinstaller可执行文件以与Pygame一起使用?

来自分类Dev

CMake 项目结构:如何将库正确合并在一起并将它们包含在多个可执行文件中

来自分类Dev

将字节写入C中的可执行文件

来自分类Dev

将Unix可执行文件转换为Windows可执行文件

来自分类Dev

可执行文件将无法执行

来自分类Dev

Qt5 CMake将所有库包含到可执行文件中

来自分类Dev

将Matlab文件部署到可执行文件

来自分类Dev

一旦将Rust可执行文件构建在Docker容器中,该如何获得它?

来自分类Dev

如何使用CMake将测试可执行文件放入单独的文件夹中?

来自分类Dev

将Java项目构建为可执行文件

来自分类Dev

将Docker映像配置为可执行文件

来自分类Dev

将Swift脚本编译为可执行文件

来自分类Dev

将PHP脚本转换为可执行文件

来自分类Dev

是否可以将metallib与可执行文件合并?

来自分类Dev

将Java项目构建为可执行文件

来自分类Dev

Java可执行文件将/转换为句点

来自分类Dev

将脚本编译为可执行文件时,如何实现到外部使用文件的文件路径?

来自分类Dev

Maven exec插件将参数传递给外部可执行文件

来自分类Dev

在SSIS中执行过程任务以使用WinSCP可执行文件将文件从远程复制到本地

来自分类Dev

第一次将Java文件转换为可执行文件

来自分类Dev

应该如何将安装在/ opt下的可执行文件添加到路径中?

来自分类Dev

是否可以将OS和Web服务器/服务器应用程序一起编译为单个可执行文件?

来自分类Dev

将运行可执行文件的Windows批处理放在一起,其名称只部分知道吗?

来自分类Dev

将15个Python脚本合并为一个可执行文件?

来自分类Dev

将命令结果插入可执行文件(一个命令)

来自分类Dev

Eclipse的可执行文件将无法在ubuntu中运行

来自分类Dev

将参数传递给Python中的可执行文件

来自分类常见问题

用沙丘将生成的可执行文件复制到我的根目录中

来自分类Dev

将托管程序合并到非托管C ++可执行文件中

Related 相关文章

  1. 1

    如何将TrueType字体文件添加到pyinstaller可执行文件以与Pygame一起使用?

  2. 2

    CMake 项目结构:如何将库正确合并在一起并将它们包含在多个可执行文件中

  3. 3

    将字节写入C中的可执行文件

  4. 4

    将Unix可执行文件转换为Windows可执行文件

  5. 5

    可执行文件将无法执行

  6. 6

    Qt5 CMake将所有库包含到可执行文件中

  7. 7

    将Matlab文件部署到可执行文件

  8. 8

    一旦将Rust可执行文件构建在Docker容器中,该如何获得它?

  9. 9

    如何使用CMake将测试可执行文件放入单独的文件夹中?

  10. 10

    将Java项目构建为可执行文件

  11. 11

    将Docker映像配置为可执行文件

  12. 12

    将Swift脚本编译为可执行文件

  13. 13

    将PHP脚本转换为可执行文件

  14. 14

    是否可以将metallib与可执行文件合并?

  15. 15

    将Java项目构建为可执行文件

  16. 16

    Java可执行文件将/转换为句点

  17. 17

    将脚本编译为可执行文件时,如何实现到外部使用文件的文件路径?

  18. 18

    Maven exec插件将参数传递给外部可执行文件

  19. 19

    在SSIS中执行过程任务以使用WinSCP可执行文件将文件从远程复制到本地

  20. 20

    第一次将Java文件转换为可执行文件

  21. 21

    应该如何将安装在/ opt下的可执行文件添加到路径中?

  22. 22

    是否可以将OS和Web服务器/服务器应用程序一起编译为单个可执行文件?

  23. 23

    将运行可执行文件的Windows批处理放在一起,其名称只部分知道吗?

  24. 24

    将15个Python脚本合并为一个可执行文件?

  25. 25

    将命令结果插入可执行文件(一个命令)

  26. 26

    Eclipse的可执行文件将无法在ubuntu中运行

  27. 27

    将参数传递给Python中的可执行文件

  28. 28

    用沙丘将生成的可执行文件复制到我的根目录中

  29. 29

    将托管程序合并到非托管C ++可执行文件中

热门标签

归档