подстановка переменных массива tcsh - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь изменить скрипт, который работает для другого приложения. Я мог бы начать все сначала, но я хотел бы узнать, как это сделать. Вот некоторые массивы, которые я устанавливаю вручную вместо использования ввода пользователя или входного файла:

set mbeg= (1 2 3 4)
set mmid= (5 6 7 8)
set mend= (9 0 0 0)

что я действительно хочу сделать, так это перебрать $time и $case и заставить его вернуть значение массива для переменных цикла.

foreach time (beg mid end)
   foreach case (1 2 3 4)
      echo \${m$time}[$case]

Для этого примера я хочу вернуть: 1 2 3 4 5 6 7 8 9 0 0 0 0

Я могу получить echo \${m$time}, чтобы вернуть "mbeg", но я не могу понять, как получить счетчик массива там. Это что-то простое, что можно сделать, или я должен изменить стратегию? Другие стратегии включают в себя ввод грубой силы имени массива и операторов if / else для выбора только массива, соответствующего переменной $time.

foreach time (beg mid end)
foreach j ( 1 2 3 4 )
   if ($time == beg) then
      echo $mbeg[$j]
   elseif ( $time == mid ) then
      echo $mmid[$j]
   else
      echo $mend[$j]

Я также мог бы попытаться прочитать из входного файла. На сегодняшний день я сделал это, используя grep и sed, чтобы свести файл к одной переменной. Спасибо.

...