2016-12-09 29 views
0

我试过一百万变化,但基本上我想能够存储复杂的文件名替换的结果。试图存储Perl的/ /输出在Bash

newName=$(perl -e 's/(\d)to\d000(\d)/(5-$1)*10000+(7-$2)/e' <<< "$img") 

不幸的是,这根本不存在。但是,当我设置Perl打印,如下所示:

perl -pe 's/(\d)to\d000(\d)/(5-$1)*10000+(7-$2)/e' <<< "$img" 

我得到了打印的正确结果。有人可以帮助我将返回的值存储在bash中的变量中吗?

+0

什么在'$ img'?为什么你从第一个中省略'-p'? – 123

+0

看起来像“turn0to10001.png”的文件名 – bobbylox

+1

试图让perl在输入到bash变量时打印输出?所有bash都是捕获标准输出... – wally

回答

4

分配正义捕捉perl命令的输出(以stdout),所以你需要有perl打印修改字符串做替换之后:

$ newName=$(perl -pe 's/(\d)to\d000(\d)/(5-$1)*10000+(7-$2)/e' <<< "turn0to10001.png") 
$ echo $newName 
turn50006.png