jenkins 管道处理来自 shell 脚本的空输出
jenkins pipeline deal with empty output from shell script
在 Jenkins 管道中,我试图将 shell 脚本的输出检索到变量中。
示例
list_test = sh(script:'ls | grep test', returnStdout:true).trim()
list_test.each { test ->
method(test)
}
只要确实有输出,这就可以正常工作。
问题是 'ls | grep test' 的输出为空。
我遇到了一个错误。
到目前为止,我找到的唯一解决方法是:
try {
list_test = sh(script:'ls | grep test', returnStdout:true).trim()
}
catch (Exception ex) {
println("output is empty")
}
if (list_test) {
list_test.each { test ->
method(test)
}
}
有没有更好的方法来处理这类问题?
如果 grep 找不到字符串,它将 return 非零退出代码。
你可以使用类似的东西:
(ls|grep test)||echo "nothing found"
或者你可以使用任何命令(用你喜欢的命令替换'sleep 1'),如果你不需要任何输出:
(ls|grep test)||sleep 1
在 Jenkins 管道中,我试图将 shell 脚本的输出检索到变量中。
示例
list_test = sh(script:'ls | grep test', returnStdout:true).trim()
list_test.each { test ->
method(test)
}
只要确实有输出,这就可以正常工作。 问题是 'ls | grep test' 的输出为空。
我遇到了一个错误。
到目前为止,我找到的唯一解决方法是:
try {
list_test = sh(script:'ls | grep test', returnStdout:true).trim()
}
catch (Exception ex) {
println("output is empty")
}
if (list_test) {
list_test.each { test ->
method(test)
}
}
有没有更好的方法来处理这类问题?
如果 grep 找不到字符串,它将 return 非零退出代码。
你可以使用类似的东西:
(ls|grep test)||echo "nothing found"
或者你可以使用任何命令(用你喜欢的命令替换'sleep 1'),如果你不需要任何输出:
(ls|grep test)||sleep 1