Yes, you need double quotes around $@, as in "$@".

https://www.gnu.org/software/bash/manual/html_node/Special-Parameters.html



Sent from my Verizon, Samsung Galaxy smartphone


-------- Original message --------
From: Ron Johnson <ron.l.john...@cox.net> 
Date: 3/12/18 2:15 PM (GMT-05:00) 
To: pgsql-general <pgsql-gene...@postgresql.org> 
Subject: psql in a bash function 



 Hi,
 
 Because I need to log into many servers, I created functions as keyboard 
shortcuts (not aliases, since I will want to embed these shortcuts in other 
functions).
 
 psqlxyz ()
 {
     echo "P1=$1";
     echo "P2=$2";
     psql -U postgres -h XYZ $@
 }
 
 This is the (simple, test) command that I want to run, which works when run 
explicitly using psql, but not my function.  Any ideas why the function isn't 
properly passing the "-c" and '"select ..."' to psql?
 
 $ psql -U postgres -h XYZ -c "select oid, datname from pg_database;"
    oid   |        datname        
 ---------+------------------------
        1 | template1
    11563 | template0
    11564 | postgres
    16404 | test1
  3039800 | ABCD
   319011 | EFGH
   649861 | IJKL
 (7 rows)
 
 $ psqldba -c '"select oid, datname from pg_database;"'
 P1=-c
 P2="select oid, datname from pg_database;"
 psql: warning: extra command-line argument "datname" ignored
 psql: warning: extra command-line argument "from" ignored
 psql: warning: extra command-line argument "pg_database;"" ignored
 psql: FATAL:  database "oid," does not exist
 
 Thanks
 
 
-- 
 Angular momentum makes the world go 'round.

Reply via email to