다음과 같은 매우 간단한 스크립트가 있습니다.
#!/bin/bash
read local _test
echo "_test: $_test"
이것이 출력입니다.
$ ./jltest.sh
sdfsdfs
_test:
_test
변수가 단지 지역 변수이길 원합니다 . 가능합니까?
답변1
로컬 내장 기능은 함수 내부에서만 작동합니다. 스크립트에 설정한 모든 변수는 명시적으로 언급하지 않는 한 이미 스크립트에 "로컬"입니다 export
. 따라서 제거하면 예상대로 작동합니다.
#!/bin/bash
read _test
echo "_test: $_test"
아니면 함수로 바꿀 수도 있습니다:
my_read () {
local _test
read _test
echo "_test: $_test"
}
함수 내부에서도 local
내장 함수는 작성한 대로 작동하지 않습니다.
귀하의 코드는 실제로 다음과 같은 이름의 변수를 설정합니다 local
.
#!/bin/bash
read local _test
echo "_test: $_test"
echo "local: $local"
$ ./script.sh
sssss aaaaa
_test: aaaaa
local: sssss