2017-12-22 7 views
1

나는 xmllintxmllint에 전달 된 명령에 환경 변수를 전달하는 방법은 무엇입니까?

내 XPath를 쿼리 내가 환경 않고 환경 변수

에 저장하고자 올바른 DbType과,로 이동해야 사용하여 XML 파일에서 db 요소의 value 특성을 추출하기 위해 노력하고있어

echo 'cat //rdbmsinfo/dbtype[@value="$ldb_source_typ"]/db/@value' | xmllint --shell "config.xml" | grep -v ">" | cut -f 2 -d "=" | tr -d \ | sed 's/"//g' 
0 (하드 코딩),이 명령

echo 'cat //rdbmsinfo/dbtype[@value="sqlserver"]/db/@value' | xmllint --shell "config.xml" | grep -v ">" | cut -f 2 -d "=" | tr -d \ | sed 's/"//g' 

작동 내가 명령 아래에 노력하고 변수

여기서 ldb_source_typ은 쉘 매개 변수의 값을 "sqlserver"으로 가져 오는 변수입니다. 그러나 위의 구문은 출력을 제공하지 않습니다.

왜이 기능이 작동하지 않고 어떻게 해결할 수 있습니까?

내 config.xml의 XML은 다음과 같습니다

<?xml version="1.0"?> 
<rdbmsinfo> 
    <dbtype value="sqlserver"> 
    <db value="sqlsrv1"> 
     <dbhostip>192.168.0.1</dbhostip> 
     <dbhostportno>2000</dbhostportno> 
     <dbusername>sample</dbusername> 
     <dbpassword>sample</dbpassword> 
    </db> 
    <db value="sqlsrv2"> 
     <dbhostip>192.168.0.2</dbhostip> 
     <dbhostportno>2000</dbhostportno> 
     <dbusername>sample</dbusername> 
     <dbpassword>sample</dbpassword> 
    </db> 
    </dbtype> 
    <dbtype value="postgresql"> 
    <db value="postsql1"> 
    </db> 
    </dbtype> 
</rdbmsinfo> 

답변

0

나는 다음과 같이이 작업을 수행 할 수 있었다 :

다음과 같은 출력을 생성
echo "cat //rdbmsinfo/dbtype[@value="ldb_source_type"]/db/@value" | sed 's/ldb_source_type/"'$SQLSERVER'"/g' | xmllint --shell config.xml| grep -v ">" | cut -f 2 -d "=" | tr -d \ | sed 's/"//g' 

:

sqlsrv1 
------- 
sqlsrv2 

을 가치 자리 표시 자에 $ 기호를 사용하는 방법을 알아낼만큼 신경 쓰지 않았고, 나는 돌아와서 이브를 편집 할 수 있습니다. ntually.

편집 : 여기에 $ 하나입니다,하지만 당신은 그것을 탈출해야합니다

echo "cat //rdbmsinfo/dbtype[@value="\$ldb_source_type"]/db/@value" | sed 's/\$ldb_source_type/"'$SQLSERVER'"/g'| xmllint --shell config.xml| grep -v ">" | cut -f 2 -d "=" | tr -d \ | sed 's/"//g' 
관련 문제