Uma maneira de fazer isso:
#! /bin/sh
VAR1="abc def ghi"
VAR2="1 2 3"
fun()
{
set $VAR2
for i in $VAR1; do
echo command "$i" "$1"
shift
done
}
fun
Saída:
command abc 1
command def 2
command ghi 3
Usando o kernel 2.6.x
Como você registraria o resultado abaixo com as seguintes variáveis usando sh (não bash, zsh, etc.)?
VAR1="abc def ghi"
VAR2="1 2 3"
CONFIG="$1"
for i in $VAR1; do
for j in $VAR2; do
[ "$i" -eq "$j" ] && continue
done
command $VAR1 $VAR2
done
Resultado desejado:
command abc 1
command def 2
command ghi 3
Uma variação da resposta de Satō Katsura (aqui, uma função autônoma):
func () {
var=$1
set -- $2
for arg1 in $var; do
printf 'command %s %s\n' "$arg1" "$1" # or cmd "$arg1" "$1" directly
shift
done
}
func "abc def ghi" "1 2 3"
O seguinte funcionaria, mas substituiria os parâmetros posicionais do script em que está:
var1="abc def ghi"
var2="1 2 3"
set -- $var2
for arg1 in $var1; do
printf 'command %s %s\n' "$arg1" "$1"
shift
done
A seguir, uma das soluções.
#!/bin/sh
var1="a b c"
var2="1 2 3"
set -- $var2
for i in $var1
do
echo $i $1
shift
done
Tags shell shell-script