jenkins 在文件的每一行都被用作参数后,我如何循环遍历它?[duplicate]

bxpogfeg  于 2023-02-03  发布在  Jenkins
关注(0)|答案(1)|浏览(142)
    • 此问题在此处已有答案**:

While loop stops reading after the first line in Bash(5个答案)
21小时前关门了。
我有一个叫做install-plugins.sh的脚本,用来在jenkins中安装插件。

#!/bin/bash

JENKINS_URL=http://localhost:8080
PLUGINS_FILE=$1

while IFS=':' read -r plugin_name plugin_version; do
  java -jar jenkins-cli.jar -s $JENKINS_URL -auth admin:admin install-plugin "${plugin_name}:${plugin_version}"
done < "$PLUGINS_FILE"

java -jar jenkins-cli.jar -s $JENKINS_URL -auth admin:admin safe-restart

我还有一个包含插件名称和版本的txt文件

run-condition:1.5
blueocean-dashboard:1.27.1
blueocean-core-js:1.27.1

每当我运行脚本时,第一个插件只被安装,而下面的其他插件没有安装。我该如何解决这个问题?

./install-plugins.sh plugins.txt

Installing run-condition:1.5 from update center
kpbwa7wx

kpbwa7wx1#

你的java会消耗掉剩下的STDIN。

run-condition:1.5

while read读取,并且

blueocean-dashboard:1.27.1
blueocean-core-js:1.27.1

java读取。
一个简单的解决方案是给予java一个自己的STDIN来咀嚼:

while IFS=':' read -r plugin_name plugin_version; do
  echo 'hoppa' | java -jar jenkins-cli.jar -s $JENKINS_URL -auth admin:admin install-plugin "${plugin_name}:${plugin_version}"
done < "$PLUGINS_FILE"

相关问题