gpt4 book ai didi

bash - 读取文件作为命令跳过行的输入

转载 作者:行者123 更新时间:2023-12-04 23:21:29 24 4
gpt4 key购买 nike

我正在尝试使用文本文件的内容作为命令的输入。我知道如何读取文件就好了。但是,当我将读取的行传递给我要执行的命令时,脚本开始每隔一行跳过。

给定一个名为 queue 的纯文本文件:

one
two
three
four

这会按预期打印出每一行:
queue=`pwd`/queue
while read input; do
echo $input
done < $queue

输出:
one
two
three
four

但是,当我通过 $input关闭命令,每隔一行被跳过:
queue=`pwd`/queue
while read input; do
echo $input
transcode-video --dry-run $input
done < $queue

输出(转码视频输出一堆东西,但为简洁起见,我省略了。我不相信它是相关的):
one
three

我设法通过首先将整个文件读入一个数组然后遍历数组来使我的脚本工作,但我仍然不明白为什么直接循环文件不起作用。我假设文件指针以某种方式变得先进,但我不知道为什么。 transcode-video是 ruby 。执行 ruby​​ 程序时,有什么我不知道在幕后发生的事情吗? gem 的作者提供了一个示例脚本,该脚本实际上使用 sed 从文件中删除了行。命令,并且工作正常。

有人可以解释这里发生了什么吗?

最佳答案

启动的应用程序尝试处理标准输入,并读取一行。尝试:

transcode-video --dry-run $input </dev/null

或者查看手册以获取执行该工作的命令行标志。

关于bash - 读取文件作为命令跳过行的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65117529/

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