Shell脚本传递包括集合在内的多个参数

最近运行一个实验遇到一个小问题,需要传递训练集名称和测试集名称到一个shell脚本。训练集只有一个,所以比较好传递,但是测试集有好几个,我把它们放在一个字符串数组里传递,但是Shell脚本内对这个数组进行遍历的时候却只能得到第一个数组元素。

狗了一下,发现很多人是只传一个数组进脚本,而不是像我这样不仅传数组参数还传单个参数,所以自己结合狗出来的结果试了一下,方法如下:

我们有个main脚本:

#!/bin/bash

#需要传入的两个测试集的名称数组
test_sets=("test_use_asr001_3k" "test_use_asr003_3k" )

#变量化一下
tests="${test_sets[@]}"

#需要传入的训练集名称
train=“train_set_only”

#将训练集名称和测试集名称数组都传入second.sh脚本
./second.sh $train "$tests"

 

在被传入的second脚本里:

#!/bin/bash

#获取训练集名称
train=$1 

#获取测试集名称数组
tests=("$2")


echo "${tests[@]}"

#遍历测试集名称
for test in ${tests[@]}; do
    echo "$test"
done

#接力传递参数给third.sh
./third.sh $train "$tests"

假设我们在second脚本内又把这些参数接力传递给third脚本,在third脚本中我们对这些参数遍历:

#!/bin/bash

train=$1

tests="${2}"

for test in ${tests[@]}; do
    echo "3:$test"
done

如此,搞定。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值