gpt4 book ai didi

mysql - 动态 Shell 变量替换

转载 作者:行者123 更新时间:2023-11-29 00:35:24 24 4
gpt4 key购买 nike

我有一个关于 Shell 变量替换的问题。

要求: 我需要向 mysql db 插入一些东西。我不想在主 shell 中编写插入脚本,所以我想将插入 sql 脚本定义为变量 $SQL 。这个变量和许多其他变量存储在另一个名为 sql.cfg 的文件中

但是这个变量将引用另一个变量$Value。当我执行主 shell 时,$Value 将被替换为实际值。

示例:在 sql.cfg 中

SQL="insert into table column1,column2 values($Value1,$Value2)"
DB_NAME=dbname
DB_IP=192.168.0.x
USR=username
PWD=password

在main.sh中

. ./sql.cfg

Value1=100
Value2=200

` mysql $DB_NAME -h$DB_IP -u $USR -p$PWD -se "$SQL;"`

问题:

如何将 $sql 正确替换为 $Value1 $Value2 以便我可以将它们插入到 mysql 数据库中?

非常感谢!!!

最佳答案

在加载/获取 sql.cfg 之前,您必须在 main.sh 中设置 Value1Value2

例子:

kent$  head *           
==> main.sh <==
#!/bin/bash
Value1=100
Value2=200
source sql.cfg
echo "$DB_NAME - $SQL"



==> sql.cfg <==
#!/bin/bash
SQL="insert into table column1,column2 values($Value1,$Value2)"
DB_NAME=dbname
DB_IP=192.168.0.x
USR=username
PWD=password

kent$ ./main.sh
dbname - insert into table column1,column2 values(100,200)

如果您真的想先加载 sql.cfg,然后在您的 main.sh 中设置值。您可以将 sql.cfg 中的 $Value1,2 更改为占位符,并在 main.sh 中根据需要替换这些值。看例子:

kent$  head *
==> main.sh <==
#!/bin/bash
source sql.cfg

Value1=444
Value2=555

SQL=$(sed "s/:Value1/$Value1/g; s/:Value2/$Value2/g" <<<$SQL)

echo "$DB_NAME - $SQL"


==> sql.cfg <==
#!/bin/bash
SQL="insert into table column1,column2 values(:Value1,:Value2)"
DB_NAME=dbname

kent$ ./main.sh
dbname - insert into table column1,column2 values(444,555)

关于mysql - 动态 Shell 变量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com