gpt4 book ai didi

mysql - BASH:从记录有空格的MySQL中获取数据

转载 作者:行者123 更新时间:2023-11-29 02:25:17 26 4
gpt4 key购买 nike

我正在尝试从 MySQL 数据库中获取值,以便稍后使用 perl 进行替换,一切正常,但如果记录包含空格“”,则变量将被错误设置。

例如,如果在我的数据库中:

  • sede = "街道"
  • fede = "卡尔文和霍布斯"
  • lede = "12"

变量的结果将是:

  • $TAGSEDE = "steet"
  • $TAGFEDE = "卡尔文"
  • $TAGLEDE = "和"

我知道设置 $DBDATAF 有问题,但是我无法识别它(英语不是我的母语,所以有些误解很可能)。

DBDATAF=$(mysql -u$DBUSER -p$DBPASS -se "USE $DBNAME; SELECT sede, fede, lede FROM $DBTABL WHERE cf='$CFPI'")

read TAGSEDE TAGFEDE TAGLEDE <<< $DBDATAF



/usr/bin/perl -p -i -e "s/TAGDATAINSERT/$TAGDATAINSERT/g" $i

最佳答案

您的代码出现故障有两个原因:

  1. $DBDATAF传递给 <<<运算符,选项卡将被丢弃。要保留它们,请双引号变量,如下所示。

  2. read使用 IFS 将输入行分隔成单词特殊变量。默认情况下,它以制表符、空格或换行符分隔。因此,即使在传递给 <<< 时制表符现在被保留了, read命令也会在空格上拆分。设置IFS一个选项卡使read根据需要拆分。放置 IFS 分配和 read在一条线上确保 IFS读取退出后返回默认值

IFS="$( echo -e '\t' )" read TAGSEDE TAGFEDE TAGLEDE <<< "$DBDATAF"

关于mysql - BASH:从记录有空格的MySQL中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23394125/

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