저는 현재 이 문제와 싸우고 있습니다.
나는 SE에 대한 이전 게시물을 읽었으며 변수(또는 배열)를 배치하는 유일한 합리적인 방법 은 ~/.profile
. 수십 개의 큰 문자열 배열입니다.echo ${myarray[12]}
myarray
마디 없는값이 있으므로 스크립트를 실행할 때마다 처음부터 생성하는 대신 한 번만 빌드하고 싶습니다.
echo "elems = ${#myarray[@]}"
그러나 will과 같은 간단한 확인은언제나반품0즉, 배열을 알 수 없으며 비어 있습니다.
그런데 왜 그럴까? 나는 실제로 선언된 변수를 예상했습니다.~/.profile
~ 할 것이다이 환경에서 실행하는 쉘 스크립트에서도 얻을 수 있습니다. (동일한 tty에서 왔음에도 불구하고 스크립트 내부에는 값이 표시되지 않습니다.)
답변1
배열은 환경 변수가 아니므로 환경 변수도 아닙니다(그리고될 수 없다)은 상위 프로세스의 하위 프로세스(예: 스크립트)에 의해 상속됩니다. "스크립트를 실행할 때마다 [배열]을 처음부터 새로 만들어야 합니다." 이것이 왜 어렵다고 생각하는지 모르겠습니다. 당신이 말했듯이 값이 일정하다면 필요한 것은 스크립트의 값을 메모리로 읽는 것뿐입니다. 배열을 초기화하는 코드로 인해 스크립트가 복잡해질까 걱정된다면 별도의 스크립트 파일에 넣고 ".
" 또는" source
".
"변수(또는 배열)를 넣는 유일한 합리적인 방법은"이라는 생각을 어디서 얻었는지 모르겠습니다 ~/.profile
.