如何使用bash脚本和for循环回显文件行

我有一个名为dbs.txt的简单文件
我想在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的手册页.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...