使用内核 2.6.x
如何使用 sh (不是 bash、zsh 等)使用以下变量编写下面的结果脚本?
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
期望的结果:
command abc 1
command def 2
command ghi 3
答案1
一种方法是:
#! /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
输出:
command abc 1
command def 2
command ghi 3
答案2
一个变体佐藤桂的回答(这里是一个独立的函数):
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"
以下内容可以工作,但会覆盖其所在脚本的位置参数:
var1="abc def ghi"
var2="1 2 3"
set -- $var2
for arg1 in $var1; do
printf 'command %s %s\n' "$arg1" "$1"
shift
done
答案3
以下是解决方案之一。
#!/bin/sh
var1="a b c"
var2="1 2 3"
set -- $var2
for i in $var1
do
echo $i $1
shift
done