詹金斯在shell命令中使用表达式/括号

发布于 2025-02-05 04:24:10 字数 497 浏览 2 评论 0 原文

如何使文件表达式与Jenkinsfile一起使用? 我想运行简单命令 rm -rv!(_ deps)以删除除 _deps 目录外的所有填充的文件。到目前为止,我尝试过的是:

  • sh'''rm -rv!(_ deps)'''',它导致 script.sh:line 1:语法错误接近意外的令牌`('('<) /code>
  • sh'rm -rv!\\(_ deps \\)'是导致 rm:不能删除'!(_ deps)':没有这样的文件或目录((但是它确实存在)
  • sh'rm -rv!\(_ deps \)'引起意外char:'\'
  • sh'rm -rv!(_ deps) )'在意外令牌附近引起语法错误`('

How to make file expressions work with Jenkinsfile?
I want to run simple command rm -rv !(_deps) to remove all populated files except _deps directory. What I've tried so far:

  • sh '''rm -rv !(_deps)''' which caused script.sh: line 1: syntax error near unexpected token `('
  • sh 'rm -rv !\\(_deps\\)' which caused rm: cannot remove '!(_deps)': No such file or directory (but it DOES exist)
  • sh 'rm -rv !\(_deps\)' which caused unexpected char: '\'
  • sh 'rm -rv !(_deps)' which caused syntax error near unexpected token `('

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长不大的小祸害 2025-02-12 04:24:10

在使用模式匹配中,您必须启用

因此以下内容将起作用。确保您的外壳执行人设置为爆炸。

sh """
   shopt -s extglob
   rm -rv !(_deps)
  """

如果您不想启用ExtGlob,则可以使用其他命令来删除目录。以下是一个选择。

ls | grep -v _deps | xargs rm -rv

在詹金斯

 sh """
    ls | grep -v _deps | xargs rm -rv
    """

In Bash to use pattern matching you have to enable extglob:

So the following will work. Make sure your shell executor is set to bash.

sh """
   shopt -s extglob
   rm -rv !(_deps)
  """

If you don't want to enable extglob you can use a different command to get the directories deleted. Following is one option.

ls | grep -v _deps | xargs rm -rv

In Jenkins

 sh """
    ls | grep -v _deps | xargs rm -rv
    """
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文