【问题标题】:run $(python -c "print 'AAAA'") not working运行 $(python -c "p​​rint 'AAAA'") 不工作
【发布时间】:2023-04-07 16:57:01
【问题描述】:

它的行为就像我给参数 "$(python") 一样。 它在参数中应该表现得像 AAAA,但事实并非如此。 这就是我无法使用 shell 代码的原因。 我希望 python 输出作为 run 的参数。

$() 现在正在工作。有什么替代方法或它在 Windows 中有效吗?

【问题讨论】:

  • “它的行为就像我将“$(python") 给了参数”。这到底是什么意思?请提供minimal reproducible example,包括预期输出和实际输出。
  • 您是在 shell 中运行 run $(python -c "print 'AAAA'"),还是 C 程序的一部分?为什么这个标签是C。 IOW,你在问什么?
  • 我想要 AAAA 作为参数,但我不想使用 run AAAA
  • 我在调试一个c程序
  • 我希望 python 提供在 gdb 中运行的参数

标签: windows shell


【解决方案1】:

GDB 的“运行”命令不进行 shell 扩展 - 它会传递参数 $(python-c"print 等等。

但是,您可以通过以下方式启动 GDB:

gdb --args ./yourprogram $(python -c "print 'AAAA'")

然后运行:

run

【讨论】:

  • ` E:\\Scripts>gdb --args ./overflow.exe $(python -c "p​​rint 'AAAA'") (gdb) break 8 (gdb) break 9 (gdb) run断点 1,函数 (str=0x84222c "$(python") at overflow.c:8 8 strcpy(buffer, str); (gdb) continue 继续。断点 2,函数 (str=0x84222c "$(python") at overflow .c:9 9 } (gdb) x/16wd $esp 0x29fed0: 2752235 8659500 2752248 2752460 0x29fee0: 1964364240 -836496046 620756990 1954115624 0x29fef0: 7237480 4200656 2752280 4199296 0x29ff00: 8659500 88 20 68 (gdb)`
  • 必须是Breakpoint 1, function (str=0x8c2224 "AAAA") at overflow.c:8 8 strcpy(buffer, str);
  • @YashGulati 哦,您使用的是 Windows?整个 $() 仅适用于 bash(和类似的 shell)。也许你可以试试 Cygwin。
  • cmd 中的 windows 替代品可能是什么?
  • @YashGulati:for /F 命令可以这样使用,至少对于简单的情况。但是批处理语言并不是真正为复杂的任务而设计的。考虑使用 Powershell,或者,在你的情况下,为什么不使用 Python?
猜你喜欢
  • 2015-08-20
  • 2018-08-05
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 2017-08-07
  • 2013-02-01
相关资源
最近更新 更多