2016-12-09 56 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