gpt4 book ai didi

bash - While 循环在 Bash 中的第一行之后停止读取

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:52 24 4
gpt4 key购买 nike

我有以下 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 读取。结果,您只会看到第一行已处理,因为该命令会消耗文件的其余部分并且您的 while 循环会终止。

这不仅发生在 ssh 上, 但对于任何读取标准输入的命令,包括 mplayer , ffmpeg , HandBrakeCLI , httpie , brew install ,等等。

为防止这种情况,请传递 -n您的 ssh 选项命令让它从/dev/null读取而不是标准输入。其他命令有类似的标志,或者你可以通用使用 < /dev/null .

关于bash - While 循环在 Bash 中的第一行之后停止读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46621866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com