2017-11-06 1 views
0

"local log"가 나타나는 첫 번째 줄인 아래 코드에서 "12 : local : not in a function"이 계속 나타납니다. 지역 변수는 함수에서 올바르게 설정되어있는 것처럼 보입니다. 누군가가 올바른 방향으로 나를 가리켜 주시겠습니까?local : 변수에 대한 함수가 아닙니다.

#!/bin/bash 

HOST="0.0.0.0" 
USER="root" 
PASS="123" 

function login{ 
if [ -z "$USER" ] 
then 
    echo "pass not set" 
else 
    local log="-u $USER" 
    local log+="-p$PASS" 
    echo $log 
fi 
} 

mysql (login) -h $HOST 

중요한 점은이 경우 Windows 10의 Ubuntu 하위 시스템에 있습니다.

+0

당신은 '로컬 로그'를 정의하는 TWICE입니다. – Jack

+0

@Jack 네,하지만 그건 별 문제가 아니에요. 두 번째 것은 단순히 이미 로컬 변수를 다시 로컬 변수로 만듭니다 (idempotently). 변수의 값에는 전혀 영향을주지 않습니다. – chepner

+0

'shellcheck.net'은 매우 좋은 조언입니다. 왜냐하면'login'이라는 함수를 실제로 정의하지 못했을 때 게시 된 코드에 다른 이슈가 있기 때문입니다. – chepner

답변

2
function login { 
      ^

중괄호보다 먼저 공간이 필요합니다.

mysql $(login) -h $HOST 
    ^

여기에도 달러 기호가 누락되어 있습니다.

+0

감사합니다. 로컬 오류 – SO03112

+0

에 문제가 없을 수도 있습니다. 다른 함수 구문으로 전환하려고 시도했을 것입니다 :'login() {'대신'function login {'나는이 문제를 스스로 복제 할 수 없습니다 (우분투 서버 14.04.5 사용)) – JNevill

+0

나는 이것이 하부 조직이라고 생각한다. 우분투로 전환했을 때, 그것은 효과가있었습니다. 도움을 주신 모든 분들께 감사드립니다. – SO03112

관련 문제