我正在使用Shell脚本从数据库中获取数据并根据用户提供的输入返回结果。
但是,我想限制用户传递特定数量的最大值(例如10),以逗号分隔。即使用户传递了10个以上的值,我的shell脚本也应限制该用户,并仅从用户提供的列表中执行10个。
我能够获取所有用户提供的值的结果,但无法确定如何将其限制为特定的数字。
IDs=a1,b2,c3,d4,e5,f6,g7,h8,i9,j10,k11,l12,m13,n14
# Above are User provided sample alphanumeric values
for i in $(echo $IDs | sed "s/,/ /g")
do
echo "Fetching results for $i by running sql against DB"
done
除了shell脚本之外,我只通过忽略其余部分来获取前10个逗号分隔的值(例如,在脚本中,需要选择直到“ a1”到“ j10”之间的值,然后忽略其余部分)并针对DB执行相同的操作。
任何帮助将不胜感激。提前致谢!
如果将ID读入数组,则可以使用参数扩展来仅获取该数组的前10个元素,如下所示:
#!/usr/bin/env bash
# ^^^^- NOT /bin/sh; arrays require a shell with ksh extensions.
IDs=a1,b2,c3,d4,e5,f6,g7,h8,i9,j10,k11,l12,m13,n14 # original input
IFS=, read -r -a id_arr <<<"$IDs" # transform into an array
max_count=10 # input w/ count to process
for i in "${id_arr[@]:0:max_count}"; do # iterate only over that many
echo "Fetching results for $i by running sql against DB"
done
在中"${arrayname[@]:0:max_count}"
,0
是起始位置(我们从头开始),max_count
是要迭代的项目数。有关参数扩展,请参见bash-hackers的Wiki页面。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句