perl system() 命令中的字符串替换
string replacement within perl system() command
以下命令和问题只是为了找出正确的语法,所以请不要在其背后寻求任何深层目的,但如果您知道正确的语法,这将对我有很大的帮助。
我有以下内容:
*在这里使用 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}")';
所以出于某种原因,后缀删除 [%.*] 在 system() 中工作得很好,但是 {//} 替换失败了。
有什么想法吗?
perl -e '$i="file.bed"; system("...")'
是
的缩写
perl -e '$i="file.bed"; system("/bin/sh", "-c", "...")'
但 sh
不支持 ${j/.bed/.bam}
。使用
perl -e '$i="file.bed"; system("bash", "-c", "...")'
以下命令和问题只是为了找出正确的语法,所以请不要在其背后寻求任何深层目的,但如果您知道正确的语法,这将对我有很大的帮助。
我有以下内容: *在这里使用 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}")';
所以出于某种原因,后缀删除 [%.*] 在 system() 中工作得很好,但是 {//} 替换失败了。
有什么想法吗?
perl -e '$i="file.bed"; system("...")'
是
的缩写perl -e '$i="file.bed"; system("/bin/sh", "-c", "...")'
但 sh
不支持 ${j/.bed/.bam}
。使用
perl -e '$i="file.bed"; system("bash", "-c", "...")'