Puppet 如何在Exec资源类型中执行bash命令行?

Puppet 如何在Exec资源类型中执行bash命令行?,puppet,Puppet,我有这份执行声明: exec { 'Normalize MP3 filename': environment => ["t=0"], command => 'for i in *mp3; do mv -v $i track_`seq -f "%03g" $t $t`.mp3 ; t=`expr $t + 1`; done', cwd => "$resource_path/res/raw",

我有这份执行声明:

    exec { 'Normalize MP3 filename':
            environment => ["t=0"],
            command => 'for i in *mp3; do  mv -v $i track_`seq -f "%03g" $t $t`.mp3 ; t=`expr $t + 1`; done',
            cwd     => "$resource_path/res/raw",
    } ->
当我的清单运行时,会出现以下错误:

Error: Could not find command 'for'
Error: /Stage[main]/Make_it::App_mp3files/Exec[Normalize MP3 filename]/returns: change from notrun to 0 failed: Could not find command 'for'

*nix操作系统上的默认exec提供程序是
posix
,它是。您应该将提供程序更改为
shell
,以使用shell内置程序

exec { 'Normalize MP3 filename':
        environment => ["t=0"],
        command => 'for i in *mp3; do  mv -v $i track_`seq -f "%03g" $t $t`.mp3 ; t=`expr $t + 1`; done',
        cwd     => "$resource_path/res/raw",
        provider => 'shell',
} ->

*nix操作系统上的默认exec提供程序是
posix
,它是。您应该将提供程序更改为
shell
,以使用shell内置程序

exec { 'Normalize MP3 filename':
        environment => ["t=0"],
        command => 'for i in *mp3; do  mv -v $i track_`seq -f "%03g" $t $t`.mp3 ; t=`expr $t + 1`; done',
        cwd     => "$resource_path/res/raw",
        provider => 'shell',
} ->