bash测试cmd失败,参数太多
在Puppet资源调配中,我确实遇到了一些问题,这些问题会导致Puppet在每一轮都运行。它是使用perodic cron作业执行的无主配置bash测试cmd失败,参数太多,bash,testing,puppet,Bash,Testing,Puppet,在Puppet资源调配中,我确实遇到了一些问题,这些问题会导致Puppet在每一轮都运行。它是使用perodic cron作业执行的无主配置 exec { 'postgresql::server::database::action1': command => "sudo -u postgres psql -d ${db_name} -a -f /opt/folderx/v2/createdb.sql", path => '/usr/pgsql-
exec { 'postgresql::server::database::action1':
command => "sudo -u postgres psql -d ${db_name} -a -f /opt/folderx/v2/createdb.sql",
path => '/usr/pgsql-9.5/bin:/usr/bin:/bin',
user => 'root',
onlyif => "test $(sudo -u postgres psql -d ${db_name} -c 'SELECT version();' ; echo $?) -ne 0",
}
问题:哪种语法仅适用于测试?在bash shell中,我将获得:
bash:test:参数太多
基本上,我需要测试在给定的$dbame中是否存在一些表和函数
postgres psql-d…
是否将某些内容打印到屏幕上?如果是,则将其输出作为参数传递到测试
。要隐藏输出,可以使用…>/dev/null
test$(someCommand;echo$?)-ne 0
过于复杂,只需编写!someCommand
。这样,您可能就不必重定向输出了
onlyif => "! sudo -u postgres psql -d ${db_name} -c 'SELECT version();' > /dev/null",
postgres psql-d…
是否在屏幕上打印内容?如果是,则将其输出作为参数传递到测试
。要隐藏输出,可以使用…>/dev/null
test$(someCommand;echo$?)-ne 0
过于复杂,只需编写!someCommand
。这样,您可能就不必重定向输出了
onlyif => "! sudo -u postgres psql -d ${db_name} -c 'SELECT version();' > /dev/null",
在bash中,正确的postgres语法是。但是它不能与test cmd一起工作。。无论如何,您的代码示例确实帮助了我,puppet将不再调用exec funcs。我将很快进行反向测试,但似乎有效。另一种解决方案是仅在文件内容发生更改时运行脚本…`bash中的文件“{”/opt/folderx/v2/createdb.sql”:audit=>'content'}`和正确的postgres语法是。但是它不能与test cmd一起工作。。无论如何,您的代码示例确实帮助了我,puppet将不再调用exec funcs。我将很快进行反向测试,但似乎有效。另一种解决方案是仅在文件内容发生更改时运行脚本…`文件{“/opt/folderx/v2/createdb.sql”:audit=>'content'}`