我正在尝试对来自 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/