这是/ tmp / foo文件
cat /tmp/foo ----> monohajo,wuem,taraziem,mullanke,fernanja
$ for i in $(cat /tmp/foo | awk -F':' '{print $NF}');
do
echo "update PTMM_ARCHIVE.FASTTRACK_USER set user_name = '"$i{xx}"' where user_name = '"$i"' ";
done | tr -d "{}"
update PTMM_ARCHIVE.FASTTRACK_USER set user_name = 'monohajoxx' where user_name = 'monohajo'
update PTMM_ARCHIVE.FASTTRACK_USER set user_name = 'wuemxx' where user_name = 'wuem'
update PTMM_ARCHIVE.FASTTRACK_USER set user_name = 'taraziemxx' where user_name = 'taraziem'
update PTMM_ARCHIVE.FASTTRACK_USER set user_name = 'mullankexx' where user_name = 'mullanke'
update PTMM_ARCHIVE.FASTTRACK_USER set user_name = 'fernanjaxx' where user_name = 'fernanja'
$ i {xx}很麻烦因为我没有删除数据库中的名字,我只是添加一个xx(更改它们) 我便宜地用tr攻击了它,最后我拿走了{}。
有更好的方法吗?
答案 0 :(得分:2)
如果需要访问紧跟其他字符的字符串中的变量,可以使用花括号将变量名称与其余字符分开:
for i in mono hajo tara;
do
echo "change $i into ${i}xx"
done
返回:
change mono into monoxx
change hajo into hajoxx
change tara into taraxx
然而,你的脚本的第一部分让我感到困惑。 foo
似乎是以逗号分隔的名称列表组成的。 awk -F':' '{print $NF}'
将打印出最后一个字段,假设字段是冒号分隔的。
他们不是。所以'last'字段也是第一个(也是唯一的)字段,意味着输出整行(包括逗号)。
但是你显示的输出不一致。它更像是一条线:
update PTMM_ARCHIVE.FASTTRACK_USER set user_name = 'monohajo,wuem,taraziem,mullanke,fernanjaxx' where user_name = 'monohajo,wuem,taraziem,mullanke,fernanja'