BASH는 바이너리를 실행하고 변수를 읽거나 수정합니다.

BASH는 바이너리를 실행하고 변수를 읽거나 수정합니다.

나는 한때 이렇게 했습니다:

declare -g var='value'
. ~script.sh sub

내 서브루틴에서 내 내용을 var읽고 수정할 수 있습니다.

이제 바이너리가 있고 script.sh동일한 기능을 원합니다. 물론 지금은 . ~/script.bin subbash 때문에 이것을 할 수 없습니다'cannot execute binary file'

대신 다음을 수행해야 합니다.

declare -g var='value'
~/script.bin sub

내 것을 어떻게 ~/script.bin sub읽거나 수정합니까 var?

나도 시도해 보았지만 쿠키는 없었 declare -gx var='value'습니다 export var='value'.

답변1

나는 공유 메모리를 사용해 보았는데, 이는 좋고 간단한 옵션일 수도 있습니다.

내 것에는 ~/script.bin sub이제 다음이 있습니다.

sub() {
shmvar="/dev/shm/var"
echo "sub var: " && cat "${shmvar}"  # show the imported var
echo "new value" > "$shmvar"         # modify the var
return 0
}

기본 스크립트에는 다음이 있습니다.

var='old value'
shmvar="/dev/shm/colBlack"    # shm var address
echo "$var" > "$shmvar"       # populate shmvar with var
~/scirpt.bin sub              # call my binary sub
echo "new var: " && cat "${shmvar}"  # check the modified var

산출:

sub var:
old value
new var:
new value

관련 정보