我正在尝试运行一个包含一系列命令/脚本以使用参数运行的文件,例如:
ls /etc/
cat /etc/hosts/
script.sh some parameters
...
这似乎工作正常,但在某些情况下,while 循环会过早结束。似乎只有当它正在执行的脚本最后包含 SSH/SCP 时才会出现这种情况。读取文件的代码:
while IFS= read -r line
do
# Cut command and parameters
IFS=', ' read -a parameters <<< "$line"
cmd="${parameters[0]}"
unset parameters[0]
runScriptAndCheckError "$cmd" "${parameters[@]}"
done < "$SCRIPT_FILENAME"
使用 set -x 时:
+ checkError 0 'ERROR: script.sh failed'
+ '[' 0 -ne 0 ']'
+ IFS=
+ read -r line
尽管文件中仍有行,但似乎没有更多输入。如果我注释掉 runScriptAndCheckError "$cmd" "${parameters[@]}" 那么它会打印更多的行。
我不确定这段代码有什么问题。如果有人可以帮忙,我会非常有帮助。