프로세스가 하나의 스크립트에서 함께 실행될 수 있도록 하위 쉘에 배열을 가져와야 합니다. 배열을 내보낼 수 없다는 것을 알고 있지만 이를 서브셸로 파이프하는 것이 가능합니까? 어떻게 해야 합니까? running()
메인 프로그램에서 배열이 변경될 때 배열을 업데이트할 수 있도록 콘텐츠가 필요하다는 함수가 있다고 가정해 보겠습니다 . 너무 느리기 때문에 배열을 파일에 저장하고 싶지 않습니다.
답변1
myfunction() ( ... )
함수를 만드는 대신 myfunction() { ... }
(하위 쉘에서 실행되도록) 사용하고 배열을 함수 인수로 전달하십시오.
myfunc() (
for f in "$@"; do
printf '%s\n' "$f"
done
)
myfunc these arguments "are passed" 'to myfunc'
myarray=( "These values" "are set as" part 'of an array' )
myfunc "${myarray[@]}"
출력은 다음과 같습니다.
these
arguments
are passed
to myfunc
These values
are set as
part
of an array
참고: 이는 단지 예시 함수일 뿐이지만 실제로는 동일한 작업을 수행하는 더 간단한 버전입니다.
myfunc_simpler() (
printf '%s\n' "$@"
)