2017-06-30 28 views
1

Jenkinsfileに次のshコマンドがあります。これはコマンドとして最後の "DATA"を実行しようとしているため動作しません。 最後の "DATA"を行の先頭に移動すると、動作しますが、私が望むほど美しくはありません。 この場合、インデントする方法はありますか?Jenkinsパイプラインの複数行のbashコマンド

sh """ 
     sshpass -p 'password' ssh -o StrictHostKeyChecking=no [email protected]$backup_registry <<DATA 
     sudo /etc/init.d/docker stop || true 
     sudo yum remove -y docker-engine.x86_64 
     sudo rm -fr /var/lib/docker /var/log/docker 
     sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm || true 
     sudo yum update -y 
     sudo yum -y install docker-io 
     sudo sed -i 's#other_args=.*#other_args="--insecure-registry $official_registry:5000"#g' /etc/sysconfig/docker 
     sudo /etc/init.d/docker start 
     DATA 
     """ 

答えて

2

<<DATAがここ-docの末<<-DATA抑制有数のタブではなくスペース

cat <<-DATA 
    hello 
<tab>DATA 

別のオプションは、マーカー

cat << " DATA" 
    hello 
    DATA 
+0

しません目のオプションにスペースを追加することで指定されているため複数行の文字列の変数が解釈されないことを意味しますか? – Tigran

+0

コマンドは、heredocがどのように動作するかを示しています。コンテンツがどのように解釈されるかは、ここで入力を読み込むプログラムに依存します。「cat」はコンテンツを表示します。あなたの質問では、シェルによってsshとsshpassによって実行されます。 –

+0

説明をいただきありがとうございました! – Tigran

関連する問題