我试图创建一个循环输入并执行命令的函数——不管它们是如何分隔的。
function loop {
# Args
# 1: Command
# 2: Inputs
for input in "$2" ; do
$1 $input
done
}
declare -a arr=("1" "2" "3")
$ loop echo "$arr[@]"
1
$ loop echo 1 2 3
1
$ loop echo $arr
1
但是根据这个答案,for .. in ..
适用于数组:
for item in "${arr[@]}" ; do
echo "$item"
done
它也适用于空格分隔的值:
for item in 1 2 3 ; do
echo "$item"
done
简而言之,我如何在传递参数时获得"${arr[@]}"
效果1 2 3
。
是否可以将这种循环概念扩展到任何类型的分隔项,例如\n
像文件这样的分隔内容?在 Python 中我们有一个概念iterators
,在 bash 中是否有类似的东西?