변수에서 값 읽기

변수에서 값 읽기

다음과 같은 변수에서 값을 읽으려고 합니다.

server=$(cat "$CONF_PATH" | grep "DevServer" | cut -d'=' -f2)
echo "server is : $server "
port=$(cat "$CONF_PATH" | grep "DevPort" | cut -d'=' -f2)
echo "port is : $port "
dbname=$(cat "$CONF_PATH" | grep "DevDatabase" | cut -d'=' -f2)
echo "dbname is :   $dbname "
echo jdbc:sqlserver://$server:$port;database=$dbname;

마지막 echo 문이 작동하지 않습니다. 다음과 같은 출력이 나올 것으로 예상했습니다.

jdbc:sqlserver://abc:1433;database=devdb;

여기서 abc는 서버 이름, 1433는 포트, devdb는 데이터베이스 이름입니다.

답변1

당신은 따옴표를 잊어 버렸습니다.

실제 입력을 알 수 없으므로 변수 내용을 교체했습니다.

인용없이:

[user@machine test]$ server=asdf
echo "server is : $server "
port=asdf2
echo "port is : $port "
dbname=asdf3
echo "dbname is :   $dbname "
echo jdbc:sqlserver://$server:$port;database=$dbname;
server is : asdf 
port is : asdf2 
dbname is :   asdf3 
jdbc:sqlserver://asdf:asdf2
[user@machine test]$ 

이스케이프되지 않은 세미콜론을 사용하여 ;쉘에 새 명령을 시작하도록 지시하십시오. 보시다시피 쉘은 $dbname다음에 할당됩니다 $database.

[user@machine test]$ echo $database
asdf3

따옴표 포함:

[user@machine test]$ #!/bin/bash
server=asdf
echo "server is : $server "
port=asdf2
echo "port is : $port "
dbname=asdf3
echo "dbname is :   $dbname "
echo "jdbc:sqlserver://$server:$port;database=$dbname;"
server is : asdf 
port is : asdf2 
dbname is :   asdf3 
jdbc:sqlserver://asdf:asdf2;database=asdf3;
[user@machine test]$ 

관련 정보