NEVERMIND、「BOURNE」を見て「BOURNE AGAIN」と思った。誰かにとって役立つかもしれないのでここに残しますが、質問に対する答えではないことは明らかです。申し訳ありません!
--
これにはいくつかの欠点があります(サイズの異なるリストを適切に処理しません)が、指定した例では機能します:
#!/bin/bash
list1="a b c"
list2="1 2 3"
c=0
for i in $list1
do
l1[$c]=$i
c=$(($c+1))
done
c=0
for i in $list2
do
echo ${l1[$c]} $i
c=$(($c+1))
done
awk や cut などの一般的な UNIX ツールを使用するより適切な方法がありますが、上記は要求どおりの純粋な bash 実装です。
受け入れられた答えにコメントすると、LinuxでもSolarisでも機能しませんでした。問題は、sedの正規表現の\ S文字クラスのショートカットでした。[^ ] に置き換えたところ、うまくいきました:
#!/bin/sh
list1="1 2 3"
list2="a b c"
while [ -n "$list1" ]
do
head1=`echo "$list1" | cut -d ' ' -f 1`
list1=`echo "$list1" | sed 's/[^ ]* *\(.*\)$/\1/'`
head2=`echo "$list2" | cut -d ' ' -f 1`
list2=`echo "$list2" | sed 's/[^ ]* *\(.*\)$/\1/'`
echo $head1 $head2
done