Wal*_*Boh 5 mysql variables bash
我正在尝试创建一个文件(称为帐户)并使用bash脚本(称之为*name_checker*)循环遍历每一行并将其转换为多个字符串以存储在名为' $ NAMES ' 的变量中,用于mysql WHERE IN条款
例如:
我的脚本*name_checker*中的查询是基本的:
SELECT*FROM表WHERE account_name IN('$ NAMES')
IN语句的值需要用逗号分隔并放入单引号中.
我的帐户文件将是由换行符分隔的名称:
NAME1
NAME2
NAME3
所以我需要我的脚本(*name_checker*)来删除换行符并用单引号括起每个名称并用逗号分隔它们.运行脚本时所需的结果将是
SELECT*FROM表WHERE account_name IN('NAME1','NAME2','NAME3')
我对此有一些困难,我对使用sed不太熟悉.感谢帮助!
无需调用外部实用程序即可完成.
cat >Accounts.txt <<XXX
NAME1
NAME2
NAME3
XXX
Run Code Online (Sandbox Code Playgroud)
脚本:
while read x; do NAMES="$NAMES,'$x'"; done <Accounts.txt
NAMES=${NAMES:1}
SQL='SELECT * FROM table WHERE account_name IN ('$NAMES')'
echo "$SQL"
Run Code Online (Sandbox Code Playgroud)
输出:
SELECT * FROM table WHERE account_name IN ('NAME1','NAME2','NAME3')
Run Code Online (Sandbox Code Playgroud)
或者它甚至可以简化去除显式循环
printf -v NAMES ",'%s'" $(<Accounts.txt)
NAMES=${NAMES:1}
echo "$NAMES";
Run Code Online (Sandbox Code Playgroud)
输出:
'NAME1','NAME2','NAME3'
Run Code Online (Sandbox Code Playgroud)