【发布时间】:2016-07-30 01:39:59
【问题描述】:
我正在阅读一个查找文件并为文件中的每一行执行一组操作。然而,while 循环只读取文件中的第一行并退出。这是我拥有的当前代码。
sql_from_lkp $lookup
function sql_from_lkp {
lkp=$1
while read line; do
sql_from_columns ${line}
echo ${line}
done < ${lkp}
}
function sql_from_columns {
table_name=$1
table_column_info_file=${table_name}_columns
line_count=`cat $table_info_file | wc -l`
....
}
通过选择性地注释代码,我发现如果我注释line_count 行,while 循环会遍历文件中的每一行并且工作正常。所以输入被cat 语句消耗掉了。
我已经检查了其他答案并了解到ssh 通常会在不使用 -n 选项的情况下消耗while 循环中的文件输入。但不知道如何解决这种情况。需要一些帮助。
【问题讨论】:
-
顺便说一句:您应该双引号引用所有变量引用,以免变量值受到分词和通配符的影响;此外,Bash 不允许您在定义之前调用函数。
-
乍一看,您似乎正在将
line传递给sql_from_colums,它期望table_name作为输入? -
@David 我基本上每一行都有一个表格。我重构了代码并删除了很多细节,使场景更容易出现。
-
@Vinay :还建议使用[ shell_check ] 工具,它可以帮助您轻松识别小错误。
标签: bash while-loop