[英]Shell script and sed commands
我有一個 shell 腳本,我正在執行 SQL 查詢,如下所示 -
query=$(cat <<all
SELECT
provider_rendering_npi
INTO table
FROM service sl
WHERE bucket = 'bucket'
AND month_id >= (SELECT month FROM annual);
all
)
sql=$(echo $query | sed -e "s/bucket/$bucket_name/g ; s/table/$directory/g")
psql -h server -U user db -c "$sql"
根據一個條件,我想修改query
變量。 例如,如果$bucket_name
包含no_inp
,我想將query
修改為
query=$(cat <<all
SELECT
provider_rendering_npi
INTO table
FROM service sl
WHERE bucket = 'bucket'
AND month_id >= (SELECT month FROM annual)
AND st_info = 'no_inp';
all
)
有沒有辦法在不復制代碼的情況下做到這一點?
創建一個在可選查詢表達式 ( expr
) 上參數化的 function:
query() {
local expr=$1
local newline=$'\n';
cat <<EOF
SELECT
provider_rendering_npi
INTO table
FROM service sl
WHERE bucket = 'bucket'
AND month_id >= (SELECT month FROM annual)${expr:+$newline}$1
EOF
}
query
query "AND st_info = 'no_inp'"
通常從零件組裝東西而不是修補整體更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.