读文件每行,写入新文件.

wqmgxj 2010-06-04 10:46:42
while read line
do
echo exec DmsPerfDB..UpdateFourGroupSubType '$line' >> query.sql
echo exec DmsPerfDB..UpdateFourGroupDev '$line' >> query.sql
echo exec DmsPerfDB..UpdateFourGropByLink '$line' >> query.sql
done<temp.txt

以上代码为什么不行?谢谢
...全文
137 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tony2251 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 steptodream 的回复:]
C/C++ code

我测试你楼上的那段while代码 根本就没问题 只是你的双引号是中文状态的 请在英文状态下输入双引号
while read line
do
echo "exec DmsPerfDB..UpdateFourGroupSubType $line" >> query.sql
echo "exec DmsPerfDB..UpdateFourGroupDev $l……
[/Quote]

ok
steptodream 2010-06-04
  • 打赏
  • 举报
回复
要不改成这样试试

for line in `cat temp.txt`
do
echo "exec DmsPerfDB..UpdateFourGroupSubType $line" >> query.sql
echo "exec DmsPerfDB..UpdateFourGroupDev $line">> query.sql
echo "exec DmsPerfDB..UpdateFourGropByLink $line">> query.sql
done
steptodream 2010-06-04
  • 打赏
  • 举报
回复
你是什么shell环境 是bash还是别的
你就用我给你的那点代码测试 别用你本身的
wqmgxj 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 steptodream 的回复:]
C/C++ code

我测试你楼上的那段while代码 根本就没问题 只是你的双引号是中文状态的 请在英文状态下输入双引号
while read line
do
echo "exec DmsPerfDB..UpdateFourGroupSubType $line" >> query.sql
echo "exec DmsPerfDB..UpdateFourGroupDev $l……
[/Quote]

我这怎么就不行呢,还是抱上面的错误.
steptodream 2010-06-04
  • 打赏
  • 举报
回复

我测试你楼上的那段while代码 根本就没问题 只是你的双引号是中文状态的 请在英文状态下输入双引号
while read line
do
echo "exec DmsPerfDB..UpdateFourGroupSubType $line" >> query.sql
echo "exec DmsPerfDB..UpdateFourGroupDev $line">> query.sql
echo "exec DmsPerfDB..UpdateFourGropByLink $line">> query.sql
done < temp.txt

temp.txt:
aaaaaaaaaaaa
bbbbbbbbbbbbbbbb


query.sql:
exec DmsPerfDB..UpdateFourGroupSubType aaaaaaaaaaaa
exec DmsPerfDB..UpdateFourGroupDev aaaaaaaaaaaa
exec DmsPerfDB..UpdateFourGropByLink aaaaaaaaaaaa
exec DmsPerfDB..UpdateFourGroupSubType bbbbbbbbbbbbbbbb
exec DmsPerfDB..UpdateFourGroupDev bbbbbbbbbbbbbbbb
exec DmsPerfDB..UpdateFourGropByLink bbbbbbbbbbbbbbbb

所以肯定是你代码别的地方的问题
wqmgxj 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 steptodream 的回复:]
'$line' shell里不能这样引用变量 这样的输出就是$line这个字符串 而不是line这个变量的值
应该是"$line"
[/Quote]
"$line" 也试了,不好用,报一样的错误
wqmgxj 2010-06-04
  • 打赏
  • 举报
回复
代码

u='sa'
p='sybase'
s='N2000DBServer'


isql -S$s -U$u -P$p -Jeucgb -i Drop.sql
isql -S$s -U$u -P$p -Jeucgb -i UpdateFourGroupSubType.sql
isql -S$s -U$u -P$p -Jeucgb -i UpdateFourGroupDev.sql
isql -S$s -U$u -P$p -Jeucgb -i UpdateFourGropByLink.sql


while read line
do
echo “exec DmsPerfDB..UpdateFourGroupSubType $line” >> query.sql
echo “exec DmsPerfDB..UpdateFourGroupDev $line” >> query.sql
echo “exec DmsPerfDB..UpdateFourGropByLink $line” >> query.sql
done < temp.txt




#isql -S$s -U$u -P$p -Jeucgb -i query.sql

#rm -fr query.sql
#echo "$i, update $1 successfully"



错误提示
root@V240_25 # . ./update.sh
bash: ./update.sh: line 17: syntax error near unexpected token `done'
'ash: ./update.sh: line 17: ` done < temp.txt
pottichu 2010-06-04
  • 打赏
  • 举报
回复
while read line
do
echo “exec DmsPerfDB..UpdateFourGroupSubType $line" >> query.sql
echo ”exec DmsPerfDB..UpdateFourGroupDev $line" >> query.sql
echo ”exec DmsPerfDB..UpdateFourGropByLink $line" >> query.sql
done < temp.txt

汗, 刚才那个引号是中文的。。。
pottichu 2010-06-04
  • 打赏
  • 举报
回复

while read line
do
echo “exec DmsPerfDB..UpdateFourGroupSubType $line” >> query.sql
echo ”exec DmsPerfDB..UpdateFourGroupDev $line” >> query.sql
echo ”exec DmsPerfDB..UpdateFourGropByLink $line” >> query.sql
done < temp.txt

steptodream 2010-06-04
  • 打赏
  • 举报
回复
'$line' shell里不能这样引用变量 这样的输出就是$line这个字符串 而不是line这个变量的值
应该是"$line"
wesleyluo 2010-06-04
  • 打赏
  • 举报
回复
搞不懂楼主怎么不行了。
steptodream 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wqmgxj 的回复:]

还是不可以,换了一种方式,还差一点就ok了.
[/Quote]
另外一个帖子里回你了
wqmgxj 2010-06-04
  • 打赏
  • 举报
回复
还是不可以,换了一种方式,还差一点就ok了.
wqmgxj 2010-06-04
  • 打赏
  • 举报
回复

awk '{print "exec DmsPerfDB..UpdateFourGroupSubType "$0" \ngo\n"}' temp.txt | sed "s/a/a/" >>query.sql

结果:
exec DmsPerfDB..UpdateFourGroupSubType NE40E-81|Tunnel0/0/193
go

exec DmsPerfDB..UpdateFourGroupSubType NE40E-81|Tunnel0/0/193
go

exec DmsPerfDB..UpdateFourGroupSubType NE40E-81|Tunnel0/0/193
go

怎么能变为

exec DmsPerfDB..UpdateFourGroupSubType 'NE40E-81|Tunnel0/0/193'
go

exec DmsPerfDB..UpdateFourGroupSubType 'NE40E-81|Tunnel0/0/193'
go

exec DmsPerfDB..UpdateFourGroupSubType 'NE40E-81|Tunnel0/0/193'
go

1,543

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 Solaris
社区管理员
  • Solaris
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧