gpt4 book ai didi

Bash 脚本在行输入上循环

转载 作者:行者123 更新时间:2023-11-29 09:18:40 26 4
gpt4 key购买 nike

我正在执行以下操作,这基本上有效。该脚本尝试将一些行插入到文件中以重写它。

但它会去除所有空白行和所有行填充。主要问题是它不处理文件的最后一行。我不确定为什么。

     while read line; do
<... process some things ...>
echo ${line}>> "${ACTION_PATH_IN}.work"
done < "${ACTION_PATH_IN}"

如何解决这个问题?

最佳答案

while IFS= read -r line; do
## some work
printf '%s\n' "$line" >> output
done < <(printf '%s\n' "$(cat input)")
  • 一个空的 IFS 告诉 read不要去除前导和尾随空格。
  • read -r防止 EOL 处的反斜杠创建续行。
  • 在您的参数替换 ( "$line" ) 上加双引号,以防止 shell 对其值进行分词和通配。
  • 使用printf '%s\n'而不是 echo因为在处理像 -e 这样的值时它是可靠的, -n
  • < <(printf '%s\n' "$(cat input)")是 LF 终止 input 内容的丑陋方式.其他构造也是可能的,具体取决于您的要求(如果您的整个 while 可以在子 shell 中运行,则管道而不是从进程替换重定向)。
    如果您只是确保它在处理之前以 LF 终止,可能会更好。

关于Bash 脚本在行输入上循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290546/

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