[英]Reuse code that contains variables in same script bash
我在bash
中有一小段代码,如下所示
#!/bin/bash
query="select * from table where id = ${row_id}"
row_id=1
echo "$query"
row_id=3
echo "$query"
row_id=4
echo "$query"
预计 output 低于
select * from table where id = 1
select * from table where id = 3
select * from table where id = 5
但我什么也没得到,因为 output
我知道我在分配变量之前引用了它。
这里的想法是使用可重用的代码,而不是在许多地方编写相同的代码
我怎样才能达到我想要的
你应该得到
select * from table where id =
select * from table where id =
select * from table where id =
正如你已经提到的原因是
我知道我在分配变量之前引用了它。
实现这一点的一种方法
$ for row_id in 1 3 5;
do
echo "select * from table where id = $row_id";
done
select * from table where id = 1
select * from table where id = 3
select * from table where id = 5
更新
根据评论
Here if row_id is a random variable I get as part of another query then how do I get the correct query as my output
这与发布的问题不同,最好定义一个 function
$ getquery() { echo "select * from table where id = $1"; }
$ getquery $RANDOM
select * from table where id = 12907
您可以创建一个 function 并通过为其分配变量在不同的地方调用 function
#!/bin/bash
# create a function with variable and write your command
# here your command is print the query
my_function_name(){
arg1=$1
echo "select * from table where id = ${arg1}"
}
# assign varaible
row_id=1
# print the ourput of function when above variable is assigned
query=$(my_function_name "$row_id")
echo $query
# assign varaible
row_id=2
# print the ourput of function when above variable is assigned
query=$(my_function_name "$row_id")
echo $query
# assign varaible
row_id=3
# print the ourput of function when above variable is assigned
query=$(my_function_name "$row_id")
echo $query
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.