我有以下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
运行ssh
命令,默认情况下ssh
从输入文件stdin中读取。结果,您仅看到处理的第一行,因为ssh
占用了文件的其余部分,而while循环终止。
为防止这种情况,请将-n
选项传递给ssh
命令,以使其从/dev/null
而不是stdin中读取。
关于bash - 在第一行之后停止读取行循环时的Shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55254873/