0

我想在文本文件列表上执行 bash 脚本(for我猜是使用循环),将 stdout 重定向到与来自 stdin 的文本文件具有相同路径的文件加上扩展名(例如 .txt 或 .sam,或只需在标准输入路径的末尾添加一个 ~ 以使其不同)。

4

1 回答 1

4

好的,假设列表不是太长,您可以从

  for i in `cat list`
  do
      # do stuff here
  done

如果列表足够长,可能会导致命令行过长,则有一段时间的变体

  cat list | while read i
  do
       # do stuff here
  done

您可以使用 basename(1) 构造文件名以摆脱旧的扩展后缀;说 .txt 到 .bak 使用

  `basename .txt ${i}`.bak

您可以使用 dirname(1) 获取路径部分

由于宏扩展较早,您可以简单地在变量中构造命令行并扩展它们。其中 op 和 np 是您的路径名

   command < $op > $np

有一本可爱的在线书籍,bash Advanced Scripting Guide涵盖了这一点以及更多内容。

于 2012-04-11T16:48:36.000 回答