2

我正在尝试基于 $i 创建一个变量

i=1
line="one two three four five six"

while [[ $i -lt 3 ]]; do 
set string$i=`echo $line | cut -d" " -f1-3`
echo $string$i
do_stuff_here
done

当我这样做时,我得到以下输出

1

预期的输出是

one two three

事实上,当我回显 $String1 时……我得到了预期的输出……所以它的存储正确。我知道它是我调用 $string$1 的方式......但我尝试了各种引号/括号,但它不起作用。有人可以告诉我如何调用我的变量吗?

4

1 回答 1

3

除非您在 do_stuff_there 中增加 i ,否则您的 while 循环永远不会停止,无论如何,这应该更接近您的预期:

i=1
line="one two three four five six"

while [[ $i -lt 3 ]]; do
  eval string$i=\"`echo $line | cut -d" " -f1-3`\"
  eval echo \$string$i
  do_stuff_here
done
于 2012-09-19T22:17:08.583 回答