将变量传递给脚本中的命令

时间:2014-07-24 23:01:58

标签: perl shell unix

我一直在寻找各地,因为我在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'}`;

所以我真的必须这样做吗?首先将它分配给一个变量然后传递它,或者有一种更优雅的方式吗?

1 个答案:

答案 0 :(得分:3)

反引号运算符(或qx{})接受 A 字符串,它(可能)内插。因此接受字符串和表达式,如$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