2016-03-07 135 views
0

下面的命令和問題僅僅是爲了弄清楚正確的語法,所以請不要追求它背後的任何深層次的目的,而是如果你知道這將是適當的語法對我很有幫助。perl系統中的字符串替換()命令

我有以下幾點: *在這裏使用perl -e來模仿一個調用system()命令來執行unix命令的perl文件。

perl -e '$i="file.bed"; system("j=$i; echo ${i} ;echo \${j}; echo \${j%.*};")'; 

這個命令很好地輸出:

file.bed 
file.bed 
file 

我想補充另一個回聲,它取代了後綴 「.bed」 的後綴 「.bam」 我想:

perl -e '$i="file.bed"; system("j=$i; echo ${i} ;echo \${j}; echo \${j%.*}; echo \${j/.bed/.bam}")'; 

,但我得到:

file.bed 
file.bed 
file 
sh: 1: Bad substitution 

同樣適用於:[%*]

perl -e '$i="file.bed"; system("j=$i; echo ${i} ;echo \${j}; echo \${j%.*}; echo \${j\/.bed\/.bam}")'; 

所以,出於某種原因,後綴拆除工程就好系統內(),但{//}替換將失敗。

任何想法?

+1

@toolic,'system'不使用'tcsh',所以這是一個相當無用的陳述。 – ikegami

回答

5
perl -e '$i="file.bed"; system("...")' 

是短期的

perl -e '$i="file.bed"; system("/bin/sh", "-c", "...")' 

${j/.bed/.bam}sh支持。使用

perl -e '$i="file.bed"; system("bash", "-c", "...")'