【发布时间】:2019-01-11 18:15:16
【问题描述】:
我有以下 shell 脚本。目的是循环遍历目标文件的每一行(其路径是脚本的输入参数)并对每一行进行处理。现在,它似乎只适用于目标文件中的第一行,并在该行被处理后停止。我的脚本有什么问题吗?
#!/bin/bash
# SCRIPT: do.sh
# PURPOSE: loop thru the targets
FILENAME=$1
count=0
echo "proceed with $FILENAME"
while read LINE; do
let count++
echo "$count $LINE"
sh ./do_work.sh $LINE
done < $FILENAME
echo "\ntotal $count targets"
在do_work.sh 中,我运行了几个ssh 命令。
【问题讨论】:
-
你的脚本没问题,但是 do_work.sh 可能有问题
-
是的,它可以吃掉所有输入,或者它可以被调用为
source并简单地退出或exec。但是这段代码看起来并不真实,OP 会注意到 echo 需要-e才能正确显示换行... -
do_work.sh是否会运行ssh? -
是的,do_work.sh 运行几个 ssh 命令。有什么特别的吗?
-
最好显示
do_work.sh源代码并运行do.sh和set -x进行调试。
标签: bash shell ssh while-loop