【问题标题】:Bash script shell input variables [duplicate]Bash脚本shell输入变量[重复]
【发布时间】:2021-08-22 10:41:25
【问题描述】:

我想自动化这些命令:

qemu-arm -g 12358 exec &
gdb-multiarch -q --nh -ex 'set architecture arm' -ex 'file exec' -ex 'target remote localhost: 12358'

如果我尝试创建这个脚本

#!/bin/bash
read VAR1
qemu-arm -g "$VAR1" exec &
gdb-multiarch -q --nh -ex 'set architecture arm' -ex 'file exec' -ex 'target remote localhost: "$VAR1"'

它不起作用,我得到这个输出

The target architecture is assumed to be arm
Reading symbols from exec...
localhost: "$VAR1": cannot resolve name: Servname not supported for ai_socktype
localhost: "$VAR1": No such file or directory.

我不是 bash 脚本方面的专家,但我认为问题出在第二个 VAR1 的“”上,有办法解决吗?

【问题讨论】:

  • 变量不在单引号内展开。
  • 在这种试图了解发生了什么的情况下,请尝试激活跟踪模式,如this answer 中所述。您将在命令行被执行之前扩展您的命令行。

标签: bash shell


【解决方案1】:

这个参数的单引号:

-ex 'target remote localhost: "$VAR1"'

正在阻止 shell 扩展您的变量 $VAR1

您可以尝试使用双引号:

#!/bin/bash
read VAR1
qemu-arm -g "$VAR1" exec &
gdb-multiarch -q --nh -ex 'set architecture arm' -ex 'file exec' -ex "target remote localhost: $VAR1"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2021-03-15
    • 2011-08-24
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多