Cshell 질문 드립니다 !!

ghrqnfl69의 이미지

Cshell 에서 변수명에 변수를 집어 넣어 여러개의 변수를 while문으로 생성하고 싶은데요 해결 방법 좀 부탁 드립니다.!!

예를 들어

#! /bin/csh

set i = "1"
while ($i <= 3 )

set abc"$i" = ls
@ i ++
end

이런 식으로 abc1 abc2 abc3 이라는 변수를 구현하고 싶은데 변수 선언이 안되네요.. 해결방법 부탁 드립니다.

chanik의 이미지

동적으로 생성된 변수명을 쓰려면, 변수를 만들때와 참조할 때 모두 eval 명령으로 감싸서 indirection을 해줘야겠습니다. 참조할 변수명이 고정되어 있을때는 indirection 없이 바로 변수명을 지정해서 참조해도 되겠고요.

#! /bin/csh
 
set i = "1"
while ($i <= 3 )
  # set variable with dynamic naming
  eval set abc$i = ls_$i
  # get the value of the variable using indirection via eval command
  set varname = abc$i
  eval echo \$$varname
  @ i++
end
 
echo $abc1 $abc2 $abc3