【问题标题】:Passing a variable to a command in a script将变量传递给脚本中的命令
【发布时间】:2014-07-24 23:01:57
【问题描述】:

我一直在到处搜索,自从我在 PERL 中迈出第一步以来,这可能是他最愚蠢的问题之一,但它就在这里。

所以我正在创建一个脚本来管理我的窗口,然后将其绑定到键盘快捷键,所以我尝试运行一个命令并传递一些变量:

my $command = `wmctrl -r :ACTIVE: -e 0,0,0,$monitors->{1}->{'width'}/2,$monitors->{1}->{'height'}`;

但我收到一条错误消息,说我没有将正确的参数传递给命令,但如果我这样做,一切都会很好:

my $test = $monitors->{1}->{'width'}/2;
my $command = `wmctrl -r :ACTIVE: -e 0,0,0,$test,$monitors->{1}->{'height'}`;

所以我真的必须这样做吗?先把它赋值给一个变量,然后再传递,还是有更优雅的方法?

【问题讨论】:

    标签: perl shell unix


    【解决方案1】:

    反引号运算符(或qx{})接受一个(可能)插值的字符串。所以接受字符串和 not 表达式,如$var/2

    这意味着 $variables$var->{1}->{some} 也是)被扩展但不是算术表达式。

    因此,您的 2 步变体有效,但不是第一个。

    如果要计算字符串中的表达式,可以使用下一个:

    my $ans=42;
    print "The @{[ $ans/2 ]} is only the half of answer\n";
    

    打印

    The 21 is only the half of answer
    

    但它的可读性不是很好,所以你已经在做的更好更优雅 - 计算 andvace 中的命令参数,qx{} 或反引号只传递计算出的$variables

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 2011-02-03
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多