다음과 같은 변수에서 값을 읽으려고 합니다.
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]$