bash
  • postgresql
  • variables
  • 2013-03-06 12 views 19 likes 
    19

    Aşağıdaki betikte olduğu gibi bir bash değişkeninde skaler postgresql değeri nasıl oluşturulur? mağaza postgresql sonucu bash değişkeni

    dbname="testlauf" 
    username="postgres" 
    
    vartest='psql -c -d $dbname -U $username -h localhost -p 5432 "SELECT gid FROM testtable WHERE aid='1';"' 
    echo "$vartest" 
    

    Ben birkaç farklı yazıları çalıştı, ama işe yaramış gibi görünüyor. Şimdiden teşekkürler.

    +0

    Komut yerine koyma için ya backticks ('\' ') ya da' $() 'kullanmalısınız. Tek tırnak ('' ') yapmayacaktır. –

    +0

    Teşekkürler. Ama hatta vartest = '$ (psql -c -d testlauf -U postgres -h localhost -p 5432" SEÇENEĞİNDEN GEÇİRDİĞİ YER ALANLARI NEREDE yardım = '1'; ")' tişörtü alışkanlık yapmaz ... bana verir "sydnac hatası yanında" -d "" Ayrıca dbname ile çalıştı ... – knutella

    +0

    .. bu coammands benim backsticks yutar ... ama aslında ben önce ve atamanın ikinci bölümünden sonra onları ekledi. – knutella

    cevap

    33

    -c seçeneğini, argümanı - sorgudan hemen önce koyun. Ayrıca, sadece tuple değerini elde etmek için ek -t seçeneğini kullanmayı unutmayın. Ve tabi ki, backticks (`) operatörünü kullanın. bazen .psqlrc dosya sütun hizalama (boşlukların) devre dışı bırakır -A seçenek, yanı sıra bazı gereksiz çıktı ekleyebiliriz olarak -X seçeneği kullanarak

    de önerilir. daha kolay dizi değişkeni bunları saklamak için olacak -t seçeneği veya kullanma

    vartest=`psql -X -A -d $dbname -U $username -h localhost -p 5432 -t -c "SELECT gid FROM testtable WHERE aid='1'"` 
    
    +1

    Çok teşekkürler Kouber, bu hile! Aslında backticks hala benim için işe yaramıyor, ama ($) yapar: vartest = $ (psql -X -h localhost -p 5432 -d testlauf -U postgres -c "SELECT gid testtable WHERE yardım = '1' ;) – knutella

    +0

    Teşekkürler. Çalışma. –

    0

    --tuples okunur satırları size verecektir, bu nedenle (eğer birden fazla sorgudan sonuç)

    vartest =(`psql -t -d $dbname -U $username -c "SELECT gid FROM testtable WHERE aid='1';"`) 
    echo $vartest 
    

    örnek:

    sorgu sonucu

    [email protected]:~$ psql -h localhost -p 5432 -t -U postgres -d postgres -c "select slot_name from pg_replication_slots" 
    barman 
    barman2 
    

    dizi değişken dönüştürebilmek

    [email protected]:~$ RESULT=(`psql -h localhost -p 5432 -t -U postgres -d postgres -c "select slot_name from pg_replication_slots"`) 
        [email protected]:~$ echo ${RESULT[0]} 
        barman 
        [email protected]:~$ echo ${RESULT[1]} 
        barman2 
    
    İlgili konular