【问题标题】:For i in loop on file uses filename as wellFor i in loop on file 也使用文件名
【发布时间】:2020-07-15 17:26:18
【问题描述】:

所以这是我在使用代码时遇到的问题:

for i in filename.txt
do
    <operations>
    done

正在对文件内容和文件名本身进行操作,为什么会发生这种情况?

为了清楚起见,我已经有 2 个解决方案可以解决这个问题,但我仍然不明白为什么会发生这种情况。 对我有用的解决方案之一:

for i in $(cat filename.txt)
do
    tar -czf ${i}.tar $i
rm -R $i
gzip $i.tar
    done

【问题讨论】:

  • for i in filename.txt 中,您将拥有一个$i,它将被设置为filename.txt。你到底在问什么?
  • 我想你想逐行读取文件?
  • 那你应该这样做:while read -r line; do ...operations using $line... ; ...etc...; done &lt; file.txt
  • 您需要minimal reproducible example。不要只是用&lt;operations&gt; 把循环体放在一边。提供一个再现您所看到问题的实际正文。

标签: bash shell for-loop


【解决方案1】:

“是的。在 filename.txt 中的 for i 中,您将有一个 $i,它将被设置为 filename.txt。如果您想读取 $i 的内容 - 在循环中执行此操作。” 谢谢 Ted Lyngmo。

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 2015-03-18
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2017-07-14
    相关资源
    最近更新 更多