2014-03-05 55 views
2

我有一個bash腳本來調用postgres中的select。我希望能夠從命令行傳遞一個變量到sql文件中。如何將一個bash變量傳入一個sql文件

sh myscript.sh 1234

#!/bin/bash 
dbase_connect="psql -h server -U username dbase" 
file="/tmp/$fname.csv" 
sql="/home/user/sql_files/query.sql" 

sudo bash -c "$dbase_connect -c -q -A -F , -f $sql -o $file" 

查詢可以是簡單的:

select name from table where id = $1; 

但我不知道如何$1調用到SQL文件。實際的查詢要大得多,我更願意將它保留在bash查詢本身之外,因爲當作爲單獨的.sql文件調用時,它更容易維護。

回答

3

可以使用sed插入參數:

#!/bin/bash 
dbase_connect="psql -h server -U username dbase" 
file="/tmp/$fname.csv" 
sql="/home/user/sql_files/query.sql" 
tmp="home/user/sql_files/query.sql.tmp" 
s="s/\$1/$1/g" 
cat $sql | sed $s > $tmp 

sudo bash -c "$dbase_connect -c -q -A -F , -f $tmp -o $file" 
rm -f $tmp 
+0

謝謝!完美的作品,給了我一個想法來鞏固另一個腳本(稍後維護較少)。 – Matthew

相關問題