【问题标题】:combine perl command inside the bash script在 bash 脚本中组合 perl 命令
【发布时间】:2015-03-02 09:29:47
【问题描述】:

Perl 是将命令输出存储到变量的优秀语言 据我所知 bash 不支持它

例如

my $value = qx(ls -ltr);
print $value;

它将打印:(示例)

 -r-xr-xr-x 1 root     root          761 May 30  2014 ASon.conf
 -r-xr-xr-x 1 root     root          699 May 30  2014 ascpl
 drwxr-xr-x 2 root     root         4096 Feb 24 13:22 da
 drwx------ 2 root     root         4096 Feb 25 08:08 vm-root
 drwxr-x--- 2 root     root         4096 Feb 25 08:10 hspeoot
 -rw-r--r-- 1 root     root         2451 Feb 25 16:12 gry.txt
 -rw-r--r-- 1 root     root         3112 Mar  1 09:49 new.xml
 -rw-r--r-- 1 root     root        44893 Mar  1 12:13 SMports.xml
 -rwxr-xr-x 1 root     root          101 Mar  2 09:56 test
 -rwxr-xr-x 1 root     root    461340404 Mar  2 10:20 audin.log

问题是我用 bash 编写代码 我想在我的 bash 脚本中使用 Perl 添加值

那么是否可以在我的 bash 脚本中合并以下行?

  my $value = qx(ls -ltr);

当我打印 value 变量时,它将打印 ls -ltr 输出

【问题讨论】:

  • echo $value 总计 451052 -r-xr-xr-x 1 个根 761 2014 年 5 月 30 日 ASCBMon.conf -r-xr-xr-x 1 个根 699 2014 年 5 月 30 日 ascbmon.pl drwxr -xr-x 2 roog (这个打印一长行)不是我想要的,并且 cat $value 不是非法的
  • 回显时需要在"$value"周围加上双引号,否则空格会丢失。
  • 哇它的工作 - 写下你的答案 - 这样我就可以投票并选择你的答案,
  • 我建议不要在两种脚本语言之间混合和匹配,除非有特别迫切的需要。这是一条通往混乱和维护难题的道路。

标签: linux bash perl


【解决方案1】:

你不需要 perl,你的 shell 可以处理它:

value=$(ls -ltr)
echo "$value"

回声时的引号很重要。

【讨论】:

    【解决方案2】:

    在 Perl 中:

    $var = `shell command`;
    $var = qx( shell command );
    

    在sh:

    var=`shell command`
    var=$( shell command )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2013-12-25
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      相关资源
      最近更新 更多