我尝试在bash脚本中执行一个for循环,需要传递两个变量。我目前正在使用下面的for循环,但没有成功。
IFS=',' ;for componentId in `echo "${componentIds}"`, packageVersion in `echo "${packageVersions}"`;
do
notes="${saveNotes}"
deployNotes="${saveNotes}"
packageVersion=`echo "${packageVersion}" | xargs`
savePackageVersion="${packageVersion}"
componentId=`echo "${componentId}" | xargs`
saveComponentId="${componentId}"
componentType="${saveComponentType}"
listenerStatus="${saveListenerStatus}"
envId=${saveEnvId}
source bin/createSinglePackage.sh componentId=${componentId} componentType="${componentType}" packageVersion="${packageVersion}" notes="${notes}" extractComponentXmlFolder="${extractComponentXmlFolder}" componentVersion=""
done
因此,我想使用命令替换来使用componentId和packageVersion变量迭代上述for循环,其中${componentIds}和${packageVersions}的值已经设置为env变量。因此,我只是尝试回显该命令并获得输出。这些变量的输出值由分隔,因此IFS =','
当我执行我当前的脚本时,它抱怨缺少参数packageVersion。
任何解决这个问题的建议都会很有帮助,谢谢!!
2条答案
按热度按时间8fsztsew1#
您可以采取两种方法:
这两种方法表示为以下logic_01和logic_02:
或
6ss1mwsb2#
下面的Shellcheck-clean代码演示了一种同时循环两个逗号分隔列表的方法: