首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果[[ ]]在groovy中编写shell脚本时不工作,为什么

如果[[ ]]在groovy中编写shell脚本时不工作,为什么
EN

Stack Overflow用户
提问于 2022-01-27 17:32:36
回答 1查看 338关注 0票数 0

案例1:在Jenkins管道中运行以下shell脚本时:

代码语言:javascript
复制
pipeline
{ 
agent any
  stages
  {

   stage('image')
        
        { 
        
    steps {
            
            script {
            sh (  returnStdout: true,
                 script: ''' #!/bin/bash
                             if [[ 56 > 10 ]]
                             then
                             echo 'The variable is greater than 10.'
                             fi
                         '''
           
            ) }
            }
          } 
        }
}

以上抛出一个异常:

代码语言:javascript
复制
/var/lib/jenkins/workspace/test-job@tmp/durable-f9ee86ef/script.sh: 2: [[: not found

CASE2:但是下面的管道运行得非常好:

代码语言:javascript
复制
pipeline
{ 
agent any
  stages
  {

   stage('image')
        
        { 
        
    steps {
            
            sh  '''#!/bin/bash
                    VAR=56
                    if [[ $VAR -gt 10 ]]
                    then
                     echo "The variable is greater than 10."
                    fi
              '''
          } 
        }
      }

}

请向我解释为什么相同的shell脚本在上面的CASE2中工作,而它在CASE1中失败?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-27 21:45:54

第一个脚本以

代码语言:javascript
复制
script: ''' #!/bin/bash

请注意,'''#之间有一个空格。只有当脚本的前两个字节为#!时,此模式才被识别并定义要使用的shell。如果它是其他任何东西,包括<space>#!,则不会识别它,并使用默认的shell。除非默认的shell是bash,否则[[是无效的。在POSIX中,只有[是有效的。

第二个脚本正确工作的原因是因为'''#之间没有空格。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70883124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档