linux - 在 bash 脚本循环中打印 cat 语句的输出

标签 linux bash for-loop cat

我正在尝试对来自 cat 命令的每一行执行一个命令。我基于从供应商处获得的示例代码。

这是脚本:

for tbl in 'cat /tmp/tables'
do
   echo $tbl
done

所以我希望输出是文件中的每一行。相反,我得到这个:

cat
/tmp/tables

这显然不是我想要的。

我将用与数据库交互的实际命令替换 echo。

如果您能帮助解决这个问题,我们将不胜感激。

最佳答案

您使用了错误类型的引号。

您需要使用反引号而不是单引号来使参数成为一个正在运行的程序并将内容传送到 forloop。

for tbl in `cat /tmp/tables` 
do 
    echo "$tbl"
done

同样为了更好的可读性(如果你使用的是bash),你可以这样写

for tbl in $(cat /tmp/tables) 
do 
    echo "$tbl"
done

如果您希望得到每一行(上面的 for 循环会给您每个单词),那么您最好使用 xargs,像这样

cat /tmp/tables | xargs -L1 echo

或者作为一个循环

cat /tmp/tables | while read line; do echo "$line"; done

关于linux - 在 bash 脚本循环中打印 cat 语句的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6868377/

相关文章:

linux - 批量重命名具有不同扩展名的多个文件 Linux 脚本?

python - 从 bash 运行 python 脚本到终端未运行

regex - sed正则表达式中 "+"的使用

linux - 如何解析 CURL 命令结果的输出?

bash - Cygwin程序已编译但无法运行

c++ - 在 C++ 中将字符串连接成 char 数组(通过使用 less strcat)

bash - 使用 sed 将条件字符串附加到文件

c++ - 是否有与基于范围的 for 循环兼容的 c.ended(iter) 方法?

java - for 循环查找字符串中的辅音

javascript - 如何更改 JavaScript 中的值而不保存到另一个变量中