[英]Shell script and sed commands
I have a shell script where I am executing a SQL query like so -我有一个 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"
Based on a condition, I would like to modify the query
variable.根据一个条件,我想修改query
变量。 For example, if the $bucket_name
contains no_inp
, I would like to modify query
to be例如,如果$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
)
Is there a way to do this without duplicating code?有没有办法在不复制代码的情况下做到这一点?
Create a function parameterized on the optional query expression ( expr
):创建一个在可选查询表达式 ( 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'"
It's usually easier to assemble things from parts instead patching a whole.通常从零件组装东西而不是修补整体更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.