簡體   English   中英

Shell 腳本和 sed 命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM