我刚开始写Shell脚本,遇到了一些困难。
我想实现的目标
我在scriptOne.sh
中有一个字符串数组,我想传递给scriptTwo.sh
到目前为止我做了什么
我可以使用./scriptTwo.sh
从第一个脚本内部执行第二个脚本,并且我已经使用./scriptTwo.sh $variableOne
将字符串变量从一个传递到另一个。
问题是当我试图传递一个数组变量时,它没有被传递。我已经设法让它通过使用./scriptTwo.sh "${array[@]}"
数组的第一个条目,但这只是其中一个条目,我需要所有的条目。
感谢您的帮助
4条答案
按热度按时间wwwo4jvm1#
你传递数组的方式是正确的
问题可能在于你如何接受它。在
scriptTwo.sh
中,使用rqqzpn5f2#
我想如果你使用一个declare命令,我们可以直接从sriptOne.sh读取数组内容。
我在scriptOne.sh中声明了一个名为wes_batch_array的关联数组,我想将它传递给scriptTwo.sh,所以我将下面的命令放在scriptTwo.sh中:
我已经测试了这个命令,它工作得很好。
如果不使用declare命令。你可以将数组的内容回显到另一个中间临时文件中,然后使用上面的awk命令来抓取bash数组的内容。
n53p2ov03#
我解决这个问题的方法是遍历www.example.com中的数组script1.sh,然后使用for循环将数组元素传递给script2.sh。在我的例子中,我将具有不同数量元素的许多数组传递给不同服务器上的同一个script2.sh。
例如:
script1.sh:
script2.sh:
yeotifhr4#
关于传递多个数组的问题,我找到了一种肮脏但有效的解决方案,将数组作为字符串传递,并使用IFS将其解析为数组: