在shell脚本中,我想通过执行迭代遍历数组,就像我在python中一样:
for i, j in (("i value", "j value"), ("Another I value", "another j value")):
# Do stuff with i and j
print i, j
但无法找到最佳方法吗?我很想在python中重写shell脚本,但对于我正在尝试做的事情来说,这似乎非常重。
答案 0 :(得分:2)
在这种情况下,我会这样做:
while [ $# -ge 2 ]; do
PATH="$1"; shift
REPO="$1"; shift
# ... Do stuff with $PATH and $REPO here
done
请注意,每次引用变量($1
,$PATH
,尤其是$@
时,您希望用""
引号括起它们 - 这样可以避免出现问题值中有空格。
答案 1 :(得分:1)
有很多方法可以做到这一点。这是一个使用这里的文档:
foo () {
while IFS=$1 read i j
do
echo "i is $i"
echo "j is $j"
done
}
foo '|' <<EOF
i value|j value
Another I value|another j value
EOF
答案 2 :(得分:0)
在这里发布我正在使用的当前kludge ..
#!/bin/bash
function pull_or_clone {
PATH=$1
shift
REPO=$1
shift
echo Path is $PATH
echo Repo is $REPO
# Do stuff with $PATH and $REPO here..
#Nasty bashism right here.. Can't seem to make it work with spaces int he string
RAWP=$@
RAWP=${#RAWP}
if [ $RAWP -gt 0 ]; then
pull_or_clone $@
fi
}
pull_or_clone path repo pairs go here