나는 한때 이렇게 했습니다:
declare -g var='value'
. ~script.sh sub
내 서브루틴에서 내 내용을 var
읽고 수정할 수 있습니다.
이제 바이너리가 있고 script.sh
동일한 기능을 원합니다. 물론 지금은 . ~/script.bin sub
bash 때문에 이것을 할 수 없습니다'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