#!/bin/sh
LIST1="0 1"
LIST2="a b"
for L1 in $LIST1; do
for L2 in $LIST2; do
echo $L1$2
done
done
这应该显示如下:
0a
0b
1a
1b
如何在两个列表中表示空值,以便脚本显示:
emptyempty
a
b
0
0a
0b
1
1a
1b
我尝试了$(),$ {EMPTY},$ *,如LIST1 =“$ {EMPTY} 0 1”等,但该值被忽略,输出以0a,0b等开始。 谢谢!
答案 0 :(得分:3)
使用数组:
LIST1=( "" 0 1 )
LIST2=( "" a b )
for L1 in "${LIST1[@]}"; do for L2 in "${LIST2[@]}"; do echo "$L1$L2"; done; done
a
b
0
0a
0b
1
1a
1b
答案 1 :(得分:1)
如果你需要在没有数组支持的POSIX shell中工作,你可以使用位于类似数组的位置参数:
set -- "" 0 1
for L1 in "$@"; do
( set -- "" a b
for L2 in "$@"; do
echo "$L1$L2"
done
)
done
第一个循环中的子shell是必要的,以避免覆盖第一个循环使用的位置参数。