![BASH는 바이너리를 실행하고 변수를 읽거나 수정합니다.](https://linux55.com/image/156116/BASH%EB%8A%94%20%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%AC%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B3%A0%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%9D%BD%EA%B1%B0%EB%82%98%20%EC%88%98%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4..png)
나는 한때 이렇게 했습니다:
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