我有一个名为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的手册页.