如何将文件中的空行作为参数传递给另一个脚本中的 bash 脚本?
这是详细信息。脚本栏从输入文件中读取行,将它们存储在一个数组中,并将数组元素作为选项和/或参数传递给脚本 foo。输入文件看起来像这样:
-l file1
dirA
-c
-lc file2
file2
-cd file3
file4
(等等)这就是发生的事情。脚本栏逐行读取文件并正确创建数组,包括空行的两个空元素。(我已经通过回显每个数组元素来检查这一点。)但是当 bar 在循环中遍历数组并将每个元素传递给脚本 foo 时,两个空元素被跳过。因此,脚本 foo 应该使用零参数和零选项调用的情况根本不会发生。脚本 foo 的所有其他运行都按预期运行。
我认为问题可能是因为输入文件除了换行符之外什么都没有,也许数组中的那些元素只是 null 而不是包含空字符串。所以我尝试在输入文件的“空白”行中放置空格,看看是否会有所不同,但结果是一样的。
当输入文件有一个空行,或者至少有一个只有空白字符的行时,我需要做什么才能让 bar 正确调用没有参数和选项的 foo?
我希望这个问题很清楚。谢谢你的帮助!
编辑。有人建议我发布脚本,所以这里是相关部分:
# read in input lines from file, add to array
index=0
while read line
do
tests[index]=$line
(( index++ ))
done < $@
# run tests
for stuff in ${tests[@]}
do
foo ${stuff} > /dev/null 2>&1
# capture and process the exit status of each foo run
done
我知道这看起来好像我没有设置 IFS。那是因为这只是我脚本的一部分。我很确定问题出在某个地方;该数组确实使用带有空行的两个元素正确构建,但这些元素在for ... in
循环中被跳过。