如何回显一个变量(其名称包含另一个变量)

How to echo a variable (name of which contains another varibale)

我正在编写一个小的 shell 脚本来读取和打印行 一个文件。

#!/bin/csh

set IN_FILE=
set i=1
foreach line ( "`cat $IN_FILE`" )
  set F$i="`echo $line`"
  echo ${F${i}}
  @ i = $i + 1
end

执行后,出现以下错误

Missing '}'.

我想知道如何回显一个变量,它包含 名称中的另一个变量。

在这里找到了一个示例:https://www.unix.com/shell-programming-and-scripting/275206-issue-nesting-variables-csh.html 并尝试使其适应您的脚本

尝试:

#!/bin/csh

set IN_FILE=
set i=1
set j=1
foreach line ( "`cat $IN_FILE`" )
  #set F$i="`echo $line`"
  #echo ${F${i}}
  set test=( F${i} )
  echo "$test[$j]"
  @ i = $i + 1
end

在这里找到了一个例子:https://www.unix.com/shell-programming-and-scripting/275206-issue-nesting-variables-csh.html

并尝试使其适应您的脚本

我没有 csh,所以用 bash 试了一下。 test.sh的内容是:

i=1
eval "F$i=\"this is a line\""
eval echo "test: " ${F$i}
echo "F1 is" $F1

它似乎有效:

 /tmp$ ./test.sh
 test: this is a line
 F1 is this is a line

已修复。

#!/bin/csh

set IN_FILE=
set i=1
foreach line ( "`cat $IN_FILE`" )
  eval "set F$i='`echo $line`'"
  eval echo ${F$i}
  @ i = $i + 1
end

非常感谢 linuxfan 的提示