我有一个名为dbs.txt的简单文件
我想在bash中使用for循环将该文件的行回显到屏幕.
我想在bash中使用for循环将该文件的行回显到屏幕.
该文件如下所示:
db1 db2 db3 db4
bash文件名为test.sh
它看起来像这样
for i in 'cat dbs.txt'; do echo $i done wait
当我通过输入以下命令运行文件时:
bash test.sh
我得到终端输出:
cat dbs.txt
而不是希望的
db1 db2 db3 db4
以下bash文件很有用:
cat dbs.txt | while read line do echo "$line" done
为什么第一个脚本不起作用?
您可以使用shell内置读取而不是cat.如果你只处理一个文件并且它不是很大,那么以下内容可能比大多数解决方案更容易,更便携:
#!/bin/sh while read line do printf "%s\n" "$line" done < "$1"
我记得在某处读取printf比echo更安全,因为echo接受的选项可能因平台而异.所以养成使用printf的习惯可能是值得的.
有关read builtin的说明,请查看shell的手册页.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。