【发布时间】:2011-02-25 14:05:10
【问题描述】:
这是我需要的代码:
#!/bin/sh
x1="a1 a2"
x2="b1 b2"
list=SOMETHING
for x in "$list"
do
echo $x
done
还有我想要的输出:
a1 a2
b1 b2
问题是:SOMETHING 应该是什么?我希望$list 的行为与$@ 一样。
注意:我不能在整个循环中使用$IFS 和eval。
【问题讨论】:
这是我需要的代码:
#!/bin/sh
x1="a1 a2"
x2="b1 b2"
list=SOMETHING
for x in "$list"
do
echo $x
done
还有我想要的输出:
a1 a2
b1 b2
问题是:SOMETHING 应该是什么?我希望$list 的行为与$@ 一样。
注意:我不能在整个循环中使用$IFS 和eval。
【问题讨论】:
这可能是你能得到的最接近的:
#!/bin/sh
x1="a1 a2"
x2="b1 b2"
set -- "$x1" "$x2"
for x in "$@"
do
# echo $x
echo "[${x}]" # proves that the lines are being printed separately
done
输出:
[a1 a2]
[b1 b2]
在 Bash 中你可以使用数组:
#!/bin/bash
x1="a1 a2"
x2="b1 b2"
list=("$x1" "$x2")
for x in "${list[@]}"
do
# echo $x
echo "[${x}]" # proves that the lines are being printed separately
done
相同的输出。
【讨论】:
在标准 POSIX shell 中是不可能的。
【讨论】: