2012-06-18 60 views
0

我想将命令的输出设置为脚本中的变量。我搜索了一整天,它看起来像我有权利的命令。但每次运行我的脚本时,它都会运行该命令,而不是只将它分配给一个变量而不运行它。如何将重命名命令的结果分配给变量?

这里是脚本的相关部分:

ffname=$(rename 's/_1080p_12000//' *.*) 
echo $ffname 

我需要使用ffname作为变量在脚本中的另一部分,而不运行命令..但它似乎没有想工作。任何人有任何建议?

+0

ubuntu上的'rename'不输出任何内容,除非使用-v。最好避免重命名。 – jordanm

回答

1

您可以将-n(无行为)选项添加到rename以获取输出。

ffnames=($(rename -n 's/_1080p_12000//' *.* | awk '{print $1,$NF}')) 

结果中包含多个项目。所以你需要一个数组来保存它们。

然后做没有-n选项的真实重命名。

0

如果您使用Bash,则可以使用shell parameter expansion替换运算符来填充已填充的变量,以替换要删除的文件名部分。例如:修改后的值,如果你喜欢

$ ffname=foo_1080p_12000.bar 
$ echo "${ffname/_1080p_12000}" 
foo.bar 

但是,它仍将由你来执行实际的MV或重命名命令,或重新分配回ffname